如何在 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 中创建具有非唯一键的地图?

如何使用 bit 在 javascript 项目中创建 typescript 组件?

在打字稿中创建随机字符串[重复]

如何在 TypeScript 中创建循环引用类型?

如何在 TypeScript 中创建本地模块

如何在 Typescript 类中创建 Angular 5 HttpClient 实例