为什么我不能将一个类型数组传递给一个带any[]
的函数/构造函数?
typedArray = new MyType[ ... ];
items = new ko.observableArray(typedArray);
给我错误:
提供的参数与呼叫目标的任何签名
都不匹配
ko.observableArray
定义为:
interface KnockoutStatic
{
observableArray: KnockoutObservableArrayStatic;
}
interface KnockoutObservableArrayStatic
{
new(value: any[]): KnockoutObservableArray;
}
declare var ko: KnockoutStatic;
如何将MyType[]
作为any[]
传递?这是协方差的问题吗?
答案 0 :(得分:3)
typedArray = new MyType[ ... ];
这不是你在JavaScript或TypeScript中创建一个新数组的方法(在0.9.0中,这将在空数组的情况下正确地成为语法错误)。你应该只能写:
typedArray = [ ... ];
让编译器正确地将类型推断为MyType[]
。如果需要,您可以添加类型注释:
typedArray = <MyType[]>[ ... ];