📅  最后修改于: 2023-12-03 14:51:11.559000             🧑  作者: Mango
在 TypeScript 中,语句末尾的 "!" 符号被称为"非空断言操作符",它表示开发者明确知道变量不会为 null
或 undefined
,并强制告诉 TypeScript 编译器相应的变量不需要进行空值检查。
非空断言操作符可以用于两种情况:
属性或方法调用中的非空断言:当一个变量被声明为可能为空的类型,但在某个特定的场景中,你确定该变量实际上不会为空时,可以使用非空断言操作符来告诉 TypeScript 编译器跳过空值检查。示例如下:
const element: HTMLElement | null = document.getElementById("myElement");
const elementText: string = element!.innerText;
可以看到,element
变量被声明为 HTMLElement | null
类型,可能为空。但是由于我们在使用 innerText
属性之前明确知道 element
不会为空,因此使用了非空断言操作符 !
。
非空断言后的类型断言:当使用类型断言(Type Assertion)时,可以在断言后使用非空断言操作符来告诉 TypeScript 编译器断言结果不会为 null
或 undefined
。示例如下:
const myVariable: string | null = getVariable();
const myVariableLength: number = (myVariable as string).length!;
myVariable
可能为 string
或 null
,我们在进行类型断言时使用了非空断言操作符 !
,可以告诉 TypeScript 编译器 myVariable
肯定不会为 null
或 undefined
。
需要注意的是,滥用非空断言操作符可能会导致运行时错误,因此要谨慎使用。只有在确保变量不为空的情况下才应该使用非空断言操作符,以避免潜在的空指针异常。