【问题标题】:TypeScript casting arraysTypeScript 强制转换数组
【发布时间】:2012-10-09 04:12:00
【问题描述】:

我正在尝试为需要数组作为输入参数的库使用包装器。

我尝试强制转换数组,但出现错误:无法将 'any[]' 转换为 'Array'

有没有办法让它工作?

var rows = new Array(10);
var rows2 = <Array>rows; //<--- Cannot convert 'any[]' to 'Array'

【问题讨论】:

  • 我可以将包装器转换为any[],但我想知道为什么我不能转换为数组。

标签: casting typescript


【解决方案1】:

TypeScript 中有 4 种可能的数组转换方法:

let x = []; //any[]

let y1 = x as number[];
let z1 = x as Array<number>;
let y2 = <number[]>x;
let z2 = <Array<number>>x;

as 运算符主要针对*.tsx 文件设计,以避免语法歧义。

【讨论】:

    【解决方案2】:

    我认为正确的语法是:

    var rows2 = <Array<any>>rows;
    

    这就是你投射到interface Array&lt;T&gt;的方式

    【讨论】:

      【解决方案3】:

      我认为这只是一个错误 - 您可以在 CodePlex 网站上记录问题吗?

      作为一种解决方法,您可以写&lt;Array&gt;&lt;any&gt;rows

      【讨论】:

      • 大概问题已经解决了。我想你们现在都在使用 GitHub 吗? ;)
      【解决方案4】:

      适用于所有类型的简单解决方案

      const myArray = <MyType[]>value;
      

      【讨论】:

      • 这不起作用,如果您控制台记录结果,myArray 不是 MyType 元素的数组
      猜你喜欢
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多