Javascript 如何在TypeScript 2中强制转换到数组?

Javascript 如何在TypeScript 2中强制转换到数组?,javascript,typescript,casting,typescript2.0,Javascript,Typescript,Casting,Typescript2.0,我有一些将对象强制转换为数组类型的代码(因此我可以在对象上使用数组函数而不会出现编译错误) 但升级到ts2后,我得到: 错误TS1122:元组类型元素列表不能为空 这实际上是一个语法错误,声称您忘记了逗号或值。那么,如何修改此强制转换以正确工作 我尝试将作为[IMyType]使用,但我不想指定类型,因为我只需要数组。。。而且,我不认为你实际上是这样做的 出于某种原因,编译器认为是result.data['value']而不是数组 你可以这样施展: result.data['value'] as

我有一些将对象强制转换为数组类型的代码(因此我可以在对象上使用数组函数而不会出现编译错误)

但升级到ts2后,我得到:

错误TS1122:元组类型元素列表不能为空

这实际上是一个语法错误,声称您忘记了逗号或值。那么,如何修改此强制转换以正确工作


我尝试将
作为[IMyType]
使用,但我不想指定类型,因为我只需要
数组。。。而且,我不认为你实际上是这样做的

出于某种原因,编译器认为
是result.data['value']
而不是数组

你可以这样施展:

result.data['value'] as any[]
它应该告诉编译器它是一个数组,或者:

result.data['value'] as Array<any>
但是,如果数组包含不同类型的项,则它可能是
any[]
或元组,例如:

result.data['value'] as [IMyType, string, string]

在任何情况下,在编译后的js中,它都是一个数组,但是元组允许您定义具有特定类型的固定长度数组。

您没有强制转换到数组

[string]
是一个具有单个元素的元组
string

[string,string]
是一个包含两个元素的元组,
string
string

[]
是一个包含零元素的元组

字符串数组的语法是
string[]


您可能需要的是
result.data['value']作为任何[]

除上述强制转换语法选项外,您还可以执行以下操作:

var n = (<SampleType[]>result.data['value']).map((a) => {
    //..
});
var n=(result.data['value']).map((a)=>{
//..
});

result.data['value']
的类型是什么?它只是一个简单的数组。我的意思是,我可以将它转换为我的最终类型[IWhatever],但我觉得这里没有必要,我只想使用数组方法。
result.data['value'] as [IMyType, string, string]
var n = (<SampleType[]>result.data['value']).map((a) => {
    //..
});