如何在 Typescript 中创建一个空字符串数组?
Posted
技术标签:
【中文标题】如何在 Typescript 中创建一个空字符串数组?【英文标题】:How can I make an empty string array in Typescript? 【发布时间】:2015-12-20 16:49:42 【问题描述】:我想要一个包含字符串错误消息的数组。这是我想出的代码:
var errors: [string];
errors = [];
Object.keys(response.data.modelState).forEach(function (key)
errors.push.apply(errors, response.data.modelState[key]);
);
我尝试了一些不同的方法来将打字稿定义添加到变量错误中,但似乎没有一种方法适用于这种情况。第一个定义可以正常工作,但是当我推送值时,我需要推送到数组以及设置时:
errors = [];
然后它给了我一个错误信息:
严重性代码描述项目文件行错误TS2322类型 'undefined[]' 不能分配给类型 '[string]'。属性“0”是 缺少类型“未定义 []”。 严重性代码描述项目文件行错误构建:类型 'undefined[]' 不能分配给类型 '[string]'。
【问题讨论】:
这能回答你的问题吗? TypeScript: Creating an empty typed container array 【参考方案1】:字符串数组的定义应该是:
// instead of this
// var errors: [string];
// we need this
var errors: string[];
errors = [];
注意:另一个问题可能是这里的参数键
...forEach(function (key) ...
我猜我们通常应该声明其中两个,因为第一个通常是值,第二个是键/索引
Object.keys(response.data.modelState)
.forEach(function (value, key)
errors.push.apply(errors, response.data.modelState[key]);
);
甚至,我们应该使用箭头函数,将父级设为this
Object.keys(response.data.modelState)
.forEach( (value, key) =>
errors.push.apply(errors, response.data.modelState[key]);
);
【讨论】:
【参考方案2】:在方法之外:
arr: string[] = [];
【讨论】:
【参考方案3】:在不将其分配给变量时需要一个明显的答案:[] as string[]
【讨论】:
【参考方案4】:另一种方法是将length
设置为0
:
const myArray = [1, 2, 3, 4]
myArray.length = 0
这使得在需要清空数组的上下文中使用const
成为可能。
【讨论】:
以上是关于如何在 Typescript 中创建一个空字符串数组?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JavaScript/TypeScript 中创建具有非唯一键的地图?