我正在尝试映射包含类型并集的数组,但是打字稿将我的代码标记为错误,我无法弄清楚如何正确实现它,可以解释发生了什么以及如何修复它?
interface x {
name: string;
}
interface y {
value: string;
}
const arr: (x | y)[] = [{ name: '1' }, { value: '2' }];
arr.map(item => {
console.log(item.name); // error here
})
答案 0 :(得分:0)
由于数组可以包含x
或y
,因此您需要为每种情况键入guard。例如,在这里您可以使用in
类型防护:
interface x {
name: string;
}
interface y {
value: string;
}
const arr: (x | y)[] = [{ name: '1' }, { value: '2' }];
arr.map(item => {
if ('name' in item) {
console.log(item.name);
}
});