TypeScript 数组类型转换

91

我试图使用一个库的包装器,该库要求以数组形式作为输入参数。

我尝试进行类型转换,但是出现了错误:无法将'any []'转换为'Array'

有没有方法让这个工作?

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

我可以将包装器转换为任何[],但我想知道为什么我不能强制转换为Array。 - Adam Tegen
4个回答

142

在 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;
< p > as 运算符主要用于 *.tsx 文件,以避免语法歧义。


17

我认为正确的语法是:

var rows2 = <Array<any>>rows;

这就是如何将类型转换为接口 Array<T>


5

我认为这只是一个bug - 你可以在CodePlex网站上记录一下问题吗?

作为解决方法,你可以编写<Array><any>rows;


问题应该已经解决了。我想你们现在都在使用GitHub吧? ;) - Heretic Monkey

5

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

const myArray = <MyType[]>value;

这个不起作用,如果你在控制台记录结果,myArray不是MyType元素的数组。 - Maxime Krier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接