Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
156
rated 0 times [  159] [ 3]  / answers: 1 / hits: 73792  / 9 Years ago, wed, september 23, 2015, 12:00:00

I would like to have an array that holds string error messages. Here's the code that I came up with:



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


I tried some different ways to add a typescript definition to the variable errors but none seem to work for this case. The first definition works okay but then when I am pushing values I need to push to an array and when I set:



errors = []; 


Then it gives me an error message:




Severity Code Description Project File Line Error TS2322 Type
'undefined[]' is not assignable to type '[string]'. Property '0' is
missing in type 'undefined[]'.
Severity Code Description Project File Line Error Build: Type
'undefined[]' is not assignable to type '[string]'.



More From » typescript

 Answers
3

The definition of string array should be:



// instead of this
// var errors: [string];
// we need this
var errors: string[];
errors = [];


Note: another issue could be the parameter key here



...forEach(function (key) {...


I would guess that we often should declare two of them, because first is very often value, second key/index



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


And even, we should use arrow function, to get the parent as this



Object.keys(response.data.modelState)
.forEach( (value, key) => {
errors.push.apply(errors, response.data.modelState[key]);
});

[#64953] Monday, September 21, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
harleyterryp

Total Points: 290
Total Questions: 92
Total Answers: 95

Location: Montenegro
Member since Sun, May 7, 2023
1 Year ago
;