当我在下面为
foo|undefined
指定 myConst
类型时,类型检查正确地告诉我 myConst
在该行上具有 foo|undefined
类型。然而,在下一行中,类型检查表明 myConst
的类型只是 foo
!因此,TypeScript 不需要我使用 ?.
运算符访问其字段,并且我可以触发运行时异常。这是为什么呢?有没有办法让 TS 尊重显式添加的 undefined
类型?
type foo = {
foo?: {
bar? : {
text: string
}
}
};
const fooArray: foo[] = [{foo: {bar: {text: "hi"}}}];
// type inspection tells me that type is correctly set to "foo|undefined"
const myConst: foo|undefined = fooArray[1];
// myConst type here is just "foo", not "foo|undefined". Where'd the "undefined" go?
// Causes runtime error: Cannot read properties of undefined (reading 'foo')
const message = myConst.foo?.bar?.text
// never executes
console.log(message);