如何在Typescript中创建一个空字符串数组?

时间:2015-09-23 11:29:26

标签: javascript typescript

我想有一个包含字符串错误消息的数组。这是我提出的代码:

var errors: [string];
errors = [];
Object.keys(response.data.modelState).forEach(function (key) {
    errors.push.apply(errors, response.data.modelState[key]);
});

我尝试了一些不同的方法来为变量错误添加一个打字稿定义,但似乎没有一种方法适用于这种情况。第一个定义工作正常,但是当我推送值时,我需要推送到数组,当我设置:

errors = []; 

然后它给我一个错误信息:

  

严重级代码说明项目文件行错误TS2322类型   '未定义[]'不能分配给' [string]'。财产' 0'是   缺少类型' undefined []'。   严重性代码描述项目文件行错误构建:类型   '未定义[]'不能分配给' [string]'。

4 个答案:

答案 0 :(得分:11)

字符串数组的定义应为:

// 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]);
});

答案 1 :(得分:1)

在不将其分配给变量时缺少明显的答案:[] as string[]

答案 2 :(得分:0)

方法之外:

arr: string[] = [];

答案 3 :(得分:0)

另一种方法是将length设置为0

const myArray = [1, 2, 3, 4]
myArray.length = 0

这使得可以在需要清空数组的情况下使用const