0

为什么我不能将类型化数组传递给一个函数/构造函数,它需要一个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[]?这是协方差的问题吗?

4

1 回答 1

3
typedArray = new MyType[ ... ];

这不是在 JavaScript 或 TypeScript 中创建新数组的方式(在 0.9.0 中,这将是空数组情况下的语法错误)。你应该能够写:

typedArray = [ ... ];

并让编译器正确地将类型推断为MyType[]. 如果需要,您可以添加类型注释:

typedArray = <MyType[]>[ ... ];
于 2013-04-02T16:15:17.700 回答