2017-06-08 52 views
2

庫使用的一種常見模式是接受該類型的數組或類型作爲函數的參數。例如:花樣T |的名稱Array <T>

interface JQuery { 
    add(selector: HTMLElement | HTMLElement[]): this; 
} 

這個模式是否有名字?我想將它別名以提高可讀性。我的第一個猜測是TypeOrArray<T>,但這聽起來很笨重,可能會很不直觀。

:我已經標記這typescript因爲這是我使用的是什麼東西和慣用可能是一個更好的答案。但是,這應該適用於任何使用泛型的語言。

回答

2

該語法是typescript允許您爲單個參數定義多個類型的方式。

在你的情況下,選擇器可以是一個HTMLElement或一個HTMLElement數組。

你可以爲任何類型的做同樣的:

function example(parameter: number | string) { 

} 

example(5) // works 

example('2') // works 

example(new Date()) // fails 
1

我不認爲模式實際上是「類型的類型或數組」。

這更像是「圖書館的任何作者認爲是方便其用戶」。

Typescript聯合類型在這裏非常適合,它允許您描述任何類型的組合都可以被特定函數接受,而不用考慮過多的名稱。

如果你傾向於命名類型,相應的名稱可能是

type HTMLElementsToAdd = HTMLElement | HTMLElement[]; 

的目的是爲了表明該類型不只是一個元素的數組,並且專用於add方法。通過jQuery API文檔的粗略查看證實它幾乎不遵循任何特定模式,並且實際上使用「或」來描述可接受的類型,for example

.append(content [, content ]) 
content 
Type: htmlString or Element or Text or Array or jQuery 
相關問題