【问题标题】: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 成为可能。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-06-01
          • 1970-01-01
          • 2019-01-02
          • 2013-11-29
          • 1970-01-01
          • 2022-01-04
          • 2015-02-12
          相关资源
          最近更新 更多