Javascript 图案T |阵列的名称<;T>;

Javascript 图案T |阵列的名称<;T>;,javascript,generics,typescript,naming-conventions,Javascript,Generics,Typescript,Naming Conventions,库使用的一种常见模式是接受类型或该类型的数组作为函数的参数。例如: interface JQuery { add(selector: HTMLElement | HTMLElement[]): this; } 这个图案有名字吗?我想给它加个别名以提高可读性。我的第一个猜测是TypeOrArray,但这听起来很笨拙,可能不直观 注意:我已经标记了这个类型脚本,因为这就是我正在使用的,而一些惯用的东西可能是更好的答案。但是,这应该适用于任何使用泛型的语言。该语法是typescript允许您

库使用的一种常见模式是接受类型或该类型的数组作为函数的参数。例如:

interface JQuery {
    add(selector: HTMLElement | HTMLElement[]): this;
}
这个图案有名字吗?我想给它加个别名以提高可读性。我的第一个猜测是
TypeOrArray
,但这听起来很笨拙,可能不直观


注意:我已经标记了这个
类型脚本
,因为这就是我正在使用的,而一些惯用的东西可能是更好的答案。但是,这应该适用于任何使用泛型的语言。

该语法是typescript允许您为单个参数定义多个类型的方式

在本例中,选择器可以是一个HtmleElement或HtmleElement数组

您可以对任何类型执行相同的操作:

函数示例(参数:数字|字符串){
}
示例(5)//有效
示例('2')//有效
示例(new Date())//失败

我不认为模式实际上是“类型或类型数组”

这更像是“图书馆的作者认为方便用户的任何东西”

Typescript联合类型非常适合这里,它允许您描述特定函数可以接受的任何类型组合,而不需要考虑太多的名称

如果您倾向于命名类型,那么合适的名称可以是

type HTMLElementsToAdd = HTMLElement | HTMLElement[];
其目的是表明该类型不仅仅是元素数组,而且特定于
add
方法。粗略浏览jQueryAPI文档可以确认它几乎不遵循任何特定模式,实际上使用“或”来描述可接受的类型:

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