为什么我不能将类型化数组传递到采用 any[]
的函数/构造函数中?
typedArray = new MyType[ ... ];
items = new ko.observableArray(typedArray);
给我错误:
Supplied parameters do not match any signature of call target
ko.observableArray
定义为:
interface KnockoutStatic
{
observableArray: KnockoutObservableArrayStatic;
}
interface KnockoutObservableArrayStatic
{
new(value: any[]): KnockoutObservableArray;
}
declare var ko: KnockoutStatic;
如何将我的 MyType[]
作为 any[]
传递?这是协方差的问题吗?
最佳答案
typedArray = new MyType[ ... ];
这不是在 JavaScript 或 TypeScript 中创建新数组的方式(在 0.9.0 中,在空数组情况下,这将是正确的语法错误)。你应该能够写:
typedArray = [ ... ];
并让编译器正确地将类型推断为 MyType[]
。如果需要,您可以添加类型注释:
typedArray = <MyType[]>[ ... ];
关于javascript - 将类型化数组作为 any[] 传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15768857/