Я пытался написать функцию для возврата массива значений в объекте
a: 1,
b: 2,
c: 3,
}
const r = Object.keys(obj).map((key) => {
let val = obj[key]
return val
})
Здесь компилятор TS показал ошибку, говоря, что
Элемент неявно имеет 'любой' тип, потому что выражение типа 'строка' не может использоваться для индексации типа '{a: number; б: число; c: номер; } '. Индексная подпись с параметром типа 'строка' не найдена для типа '{a: number; б: число; c: номер; } '. ts (7053)
Я не могу понять, что это означает, но я думал, что это как-то связано с тем, что key
является строкой. поэтому я попробовал это вместо
let obj = {
a: 1,
b: 2,
c: 3,
}
const r = Object.keys(obj).map((key) => {
let val = obj[key as keyof typeof obj] // the error now is gone
return val
})
console.log('r', r)
Теперь ошибки нет. Я не совсем уверен, почему. все, что я знаю, это то, что keyof
даст тип разрешенных имен свойств на obj
, но я не знаю, для какой цели typeof
служит здесь