【问题标题】:Passing typed array as any[]?将类型化数组作为任何 [] 传递?
【发布时间】:2013-03-24 00:39:39
【问题描述】:

为什么我不能将类型化数组传递给采用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[] 传递?这是协方差的问题吗?

【问题讨论】:

    标签: javascript knockout.js typescript


    【解决方案1】:
    typedArray = new MyType[ ... ];
    

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

    typedArray = [ ... ];
    

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

    typedArray = <MyType[]>[ ... ];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 2017-09-06
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      相关资源
      最近更新 更多