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"?