typescript ?运算符
时间: 2023-09-01 09:12:55 浏览: 76
TypeScript 中的 ? 运算符用于表示一个属性是可选的,即该属性可以存在,也可以不存在。在对象类型或接口中使用 ? 运算符可以定义一个可选属性。例如:
```
interface Person {
name: string;
age?: number; // age 属性是可选的
}
const person1: Person = { name: 'Jack' }; // 合法
const person2: Person = { name: 'Tom', age: 20 }; // 合法
```
相关问题
typescript ??运算符
TypeScript 中的 `??` 运算符是 Nullish Coalescing 运算符,用于处理 null 或 undefined 值。它的作用是如果左侧的表达式结果为 null 或 undefined,则返回右侧的默认值,否则返回左侧表达式的结果。
例如:
```typescript
const foo = null;
const bar = foo ?? "default value";
console.log(bar); // 输出 "default value"
```
在上面的示例中,`foo` 是 null,所以 `bar` 的值为 `"default value"`。
需要注意的是,`??` 运算符只会在左侧表达式的结果为 null 或 undefined 时返回右侧的默认值。如果左侧表达式的结果是空字符串、0、false 或 NaN 等 Falsy 值,仍然会返回左侧表达式的结果。如果需要判断左侧表达式的结果是否为 Falsy 值,应该使用 || 运算符。
TypeScript ?? ?.语法
TypeScript中的`??`和`?.`语法是用于处理`null`和`undefined`值的操作符,它们可以帮助开发者编写更安全和简洁的代码。
1. **空值合并运算符(??)**:
空值合并运算符`??`用于在左侧操作数为`null`或`undefined`时,返回右侧操作数的值,否则返回左侧操作数的值。
```typescript
let a: string | null = null;
let b: string = "default";
let result = a ?? b; // result的值为"default"
```
在这个例子中,`a`是`null`,所以`result`的值为`b`,即"default"。
2. **可选链运算符(?.)**:
可选链运算符`?.`用于在访问对象属性或调用对象方法时,如果对象本身是`null`或`undefined`,则返回`undefined`,而不是抛出错误。
```typescript
let obj: { name?: string } | null = null;
let name = obj?.name; // name的值为undefined
```
在这个例子中,`obj`是`null`,所以`name`的值为`undefined`,而不是抛出错误。
可选链运算符还可以用于调用方法:
```typescript
let obj: { method?: () => string } | null = null;
let result = obj?.method?.(); // result的值为undefined
```
在这个例子中,`obj`是`null`,所以`result`的值为`undefined`,而不是抛出错误。
阅读全文