请分别TypeScript中?. , ?? , !: , _ , \** 等符号的含义?

在TypeScript中,?., ??, !, _, **等符号都有其特定的用途和含义。下面分别解释这些符号:

1. ?.(可选链操作符)

可选链操作符?.允许你安全地访问对象的嵌套属性,而不需要在每一级属性访问之前显式检查是否为nullundefined

interface User {
    info?: {
        name?: string;
    };
}

const user: User = {};

// 不使用可选链操作符
const name = user && user.info ? user.info.name : undefined;

// 使用可选链操作符
const betterName = user.info?.name;

如果user.infonullundefinedbetterName将会是undefined,而不是抛出错误。

2. ??(空值合并操作符)

空值合并操作符??用于提供一个默认值,当左侧的表达式结果为nullundefined时。

const input = null;
const output = input ?? "default"; // "default"

这里,由于inputnulloutput将会是"default"

3. !(非空断言操作符)

非空断言操作符!用于告诉TypeScript编译器,表达式的值一定不是nullundefined,即使类型检查无法确认这一点。

const value: number | null = null;
const nonNullValue: number = value!; // 断言value不为null或undefined

使用!时应当谨慎,因为如果值确实是nullundefined,运行时会出现错误。

4. _(下划线)

在TypeScript中,_主要用作标识符的一部分,如变量名、函数名等。在数值字面量中,_可以作为数值分隔符使用,以提高可读性,但这是ES2021(ECMAScript 12)引入的JavaScript特性。

const oneMillion = 1_000_000; // 数值分隔符,表示1000000

5. **(指数运算符)

**是ES2016(ECMAScript 7)引入的指数运算符,用于计算基数的指数次幂。

const squared = 2 ** 2; // 4
const cubed = 2 ** 3; // 8

这里,squared是2的平方,cubed是2的立方。

总结,这些符号和操作符在TypeScript(及现代JavaScript)中有着特定的用途,从提高代码的安全性和可读性到简化复杂的表达式,它们都是开发者工具箱中的重要组成部分。

发表评论

后才能评论