Проблема, с которой я столкнулся в проекте, может быть упрощена следующим образом:
const obj1 = {
name: 'bob',
age: 18
}
const obj2 = {
name: 'tom',
age: 19
}
for (const key in obj1) {
obj1[key] = obj2[key]
}
for (const key in obj1) {
type Key = keyof typeof obj1
obj1[key as Key] = obj2[key as Key]
}
for (const key in obj1) {
type Key = keyof typeof obj1
type Value = typeof obj1[Key]
(obj1[key as Key] as Value) = obj2[key as Key]
}
Первый for
сказал No index signature with a parameter of type 'string' was found on type '{ name: string; age: number; }'
. Я полностью понимаю, поэтому я попробовал второй for
.
Второй for
сказал Type 'string | number' is not assignable to type 'never'.
Type 'string' is not assignable to type 'never'
, что меня очень смутило.
Хотя мне удалось использовать третий for
, я до сих пор не могу понять, почему Typescript отображал эту ошибку: Type 'string | number' is not assignable to type 'never'.
Type 'string' is not assignable to type 'never'
Весь код можно найти на этой детской площадке