【问题标题】:How can I make an empty string array in Typescript?如何在 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]'。
【问题讨论】:
标签:
javascript
typescript
【解决方案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 成为可能。