Fla*_*ape 9 javascript casting typescript typescript2.0
我有一些代码将对象转换为类型数组(所以我可以在对象上使用数组函数而不会出现编译错误).
var n = (result.data['value'] as []).map( (a)=>{
//..
});
Run Code Online (Sandbox Code Playgroud)
但升级到ts2后,我得到:
错误TS1122:元组类型元素列表不能为空.
这实际上是一个语法错误,声称你忘记了逗号或值.那么,如何修改此强制转换才能正常工作?
我试过as [IMyType]
并且它有效,但我不想指定类型,因为我只需要array.prototype
这里的功能......而且,我不认为你是如何实际做到的.
Nit*_*mer 18
由于某种原因,编译器认为这result.data['value']
是一个元组而不是数组.
你可以这样投:
result.data['value'] as any[]
Run Code Online (Sandbox Code Playgroud)
哪个应该告诉编译器它是一个数组,或者:
result.data['value'] as Array<any>
Run Code Online (Sandbox Code Playgroud)
如果您的数组只有类型的项目,IMyType
那么只需:
result.data['value'] as IMyType[]
Run Code Online (Sandbox Code Playgroud)
但是,如果您的数组包含不同类型的项目,那么它可以是一个any[]
或一个元组,例如:
result.data['value'] as [IMyType, string, string]
Run Code Online (Sandbox Code Playgroud)
在任何情况下,在编译的js中它将是一个数组,但是元组允许您定义具有特定类型的固定长度数组.
你没有投射到数组.
[string]
是一个单元素的元组string
.
[string, string]
是一个有两个元素的元组,string
和string
.
[]
是一个零元素的元组.
字符串数组的语法是 string[]
你可能想要的是什么result.data['value'] as any[]
.