我有一些代码将对象转换为数组类型(这样我就可以在对象上使用数组函数而不会出现编译错误)。
var n = (result.data['value'] as []).map( (a)=>{
//..
});
但是在升级到 ts2 时,我得到:
error TS1122: A tuple type element list cannot be empty.
这实际上是语法错误,声称您忘记了逗号或值。那么,我该如何修改此转换才能正常工作?
我试过 as [IMyType]
并且它有效,但我不想指定类型,因为我在这里只需要 array.prototype
函数......还有,我不认为那是你实际这样做的方式。
最佳答案
出于某种原因,编译器认为 result.data['value']
is a tuple而不是数组。
你可以这样转换它:
result.data['value'] as any[]
应该告诉编译器它是一个数组,或者:
result.data['value'] as Array<any>
如果您的数组只有 IMyType
类型的项目,那么只需:
result.data['value'] as IMyType[]
但是,如果您的数组包含不同类型的项目,那么它要么是 any[]
要么是元组,例如:
result.data['value'] as [IMyType, string, string]
在任何情况下,在编译后的 js 中它将是一个数组,但是元组允许您定义具有特定类型的固定长度的数组。
关于javascript - 如何在 TypeScript 2 中转换为数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39649994/