我想有一个包含字符串错误消息的数组。这是我提出的代码:
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]'。
答案 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
。