Typescript 对象可能是';未定义';在三元操作中

Typescript 对象可能是';未定义';在三元操作中,typescript,Typescript,我有一段代码: const newProps = { onClick: props.onSelect ? () => props.onSelect(choice.value) : undefined, } 在TypeScript中,哪个会给我错误对象可能是“未定义的” 我认为TypeScript在这方面很聪明,并且会理解在这一点上,props.onSelect不能是未定义的。我知道运算符,但我想知道为什么这不起作用。问题是,props.onSelect的用法在另一个函数中,您在之

我有一段代码:

const newProps = {
    onClick: props.onSelect ? () => props.onSelect(choice.value) : undefined,
}
在TypeScript中,哪个会给我错误
对象可能是“未定义的”


我认为TypeScript在这方面很聪明,并且会理解在这一点上,props.onSelect不能是未定义的。我知道
运算符,但我想知道为什么这不起作用。

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

例:

您还需要在箭头功能中选择
onSelect

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

注意:我假设您简化了,实际上有两个prop对象,因为否则您的代码将无法编译。

这没有任何意义。您正在定义一个
常量props
,并在定义中检查
props.onSelect
是否真实-它总是未定义。是的,我简化了我拥有的真实代码,但不够小心。现在修好了。是的,我简化了。谢谢你的回答,这真的很有道理!真不敢相信我自己都没意识到。。。
const props = {
    onClick: propsOther.onSelect ? () => propsOther.onSelect && propsOther.onSelect(choice.value) : undefined,
}