Avatar ·

TypeScript 支持 ?. 运算符吗?它叫什么名字?

大家好!我最近开始学习 TypeScript,遇到了一个问题。在代码中,我经常需要访问一个可能不存在的对象的属性。例如,我有一个从服务器返回的对象 `user`,它可能有一个嵌套字段 `profile.name`。如果我写 `user.profile.name`,TypeScript 会报错,说 `profile` 可能是 `undefined`。我知道 JavaScript 中有 `?.` 运算符,可以安全地访问属性。但我不确定 TypeScript 是否支持它,以及它叫什么名字。我尝试这样写: ```typescript interface User { profile?: { name?: string; }; } const user: User = {}; console.log(user.profile.name); // 错误:Object is possibly 'undefined' ``` 如果我加上 `?.`,错误就消失了: ```typescript console.log(user?.profile?.name); ``` 但我不明白,这是 TypeScript 的特性还是 JavaScript 的?这个运算符的正确名称是什么——"optional chaining"、"question mark"?