我有以下代码:
module array {
export function contains(arr: Array, item: any): bool { // implementation }
}
Run Code Online (Sandbox Code Playgroud)
我希望能够拥有的是union类型(在上面的示例中,可能是Node,NodeList和IArguments)或导出函数的多个签名.我似乎无法做到.
我尝试使用不同的参数类型多次声明函数,但是编译器抱怨缺少return语句 - 没有证据证明只用于参数类型检查的声明的实现(并使代码冗长).我认为更好的方法是拥有工会类型,不是吗?
所以问题是:我如何实现类型检查,其中允许的参数是不同类型的(在这种情况下 - 数组像对象),但实现是相同的,而不必复制/粘贴实现(基本上是一个简单的'return false'可能会在最后一个之前的声明中做,但看起来仍然是一个坏主意).
您可以使用any关键字来设置动态参数:
export function contains(arr: any[], item: any): bool { // implementation }
Run Code Online (Sandbox Code Playgroud)
或者,如果您知道要允许的类型,则可以重载该函数:
export function contains(arr: string[], item: string): bool;
export function contains(arr: number[], item: number): bool;
export function contains(arr: any[], item: any): bool { // implementation }
Run Code Online (Sandbox Code Playgroud)
我曾经使用过string并number作为一个例子 - 但你可以使用你喜欢的任何类型.我还假设如果你有一个字符串列表,你将寻找一个字符串项,但如果不是这样你就可以改变它.
最终函数不可调用 - 您只能通过重载访问它.
| 归档时间: |
|
| 查看次数: |
3198 次 |
| 最近记录: |