javascript - 如何在 TypeScript 2 中转换为数组?

标签 javascript typescript casting typescript2.0

我有一些代码将对象转换为数组类型(这样我就可以在对象上使用数组函数而不会出现编译错误)。

    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/

相关文章:

javascript - 在 Cordova 中将 handleOpenURL 与自定义 URL 方案结合使用

javascript - 当调用refreshData方法时,pqSelect的宽度会增加

javascript - jQuery 自动完成 : How to disallow free text, 并显示必须从列表中选择项目的错误?

typescript - 限制方法中的接口(interface)类型参数

JavaScript:将表达式转换为字符串

javascript - 在 Flash 中禁用使用箭头键滚动

javascript - Angularjs 1.x 中的 Typescript 继承

node.js - 为什么在 Node.js 代码中使用 import 和 require()?

c# - 将 DataTable 中的列值从 byte[] 转换为 String

java - List<?> 将整数转换为 List<Double>,为什么这可能?