对象在三元操作中可能是“未定义的”

时间:2017-11-24 14:33:14

标签: typescript

我有这段代码:

const newProps = {
    onClick: props.onSelect ? () => props.onSelect(choice.value) : undefined,
}

在TypeScript中哪个会给我错误Object is possibly 'undefined'

我认为TypeScript对此很聪明,并且明白在这一点上,props.onSelect不能被定义。我知道!运算符,但我想知道为什么这不起作用。

1 个答案:

答案 0 :(得分:1)

问题是props.onSelect的使用是在另一个函数中,你在?之后定义的箭头函数。这意味着编译器无法保证在调用时props.onSelect未定义:

例如:

propsOther.onSelect = undefined;
props.onClick();

您还需要在箭头功能中检查onSelect

const props = {
    onClick: propsOther.onSelect ? () => propsOther.onSelect && propsOther.onSelect(choice.value) : undefined,
}

注意:我认为你已经简化了,实际上有两个道具对象,因为否则你的代码就无法编译。