javascript - 将类型化数组作为 any[] 传递?

标签 javascript knockout.js typescript

为什么我不能将类型化数组传递到采用 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/

相关文章:

javascript - 如何在 d3 v4 中制作可点击的过渡条形图?

javascript - HTML 多选更改 'None selected' 文本

knockout.js - 如何强制 observable 从 DOM 元素中读取值

angular - angular 2 中的类型是什么?

javascript - 全局减少 - 使用单个对象文字

javascript - 按字母顺序比较 2 个字符串以进行排序

javascript - 为什么这个 ChartJS 图表没有被加载? (使用Vue.js)

javascript - 在 knockout.js 中强制应用绑定(bind)

angular - 将第三方库导入 Angular 库会报错

javascript - Angular2 和 typescript 错误