Здравствуйте!
Почему typescript даже в цикле по свойствам считает что объект может быть undefined или что ключа нет в объекте?
interface IMain{
user:string,
val1:number,
val2:number,
val3:number
}
type IShort = {
[Property in keyof IMain as Exclude<Property, "user">]?:number
}
function sum(a:IMain,b:IShort){
for(const key in b)
b[key as keyof typeof b] = a[key as keyof typeof b] - (b[key as keyof typeof b] || 0)
return b;
}
console.log(sum({user:"user1",val1:52,val2:71,val3:10},{val2:10,val3:15}))
Live demo
Подскажите, пожалуйста, можно ли избавиться в цикле от key as keyof typeof b и от || 0 или нет?
То есть приблизиться к такому виду:
for(const key in b)
b[key] = a[key] - b[key]