TS !. 和?.的区别
他们分别叫做 非空断言和可选链操作符.
!. 和 ?. 是 TypeScript 中的两个不同的操作符,它们用于处理可能为 null 或 undefined 的值。它们的作用如下:
!.(非空断言操作符)!.是 TypeScript 中的非空断言操作符,用于告诉编译器某个表达式的结果不会为null或undefined,即使它的类型声明中包含了可能为null或undefined的类型。x!告诉编译器x不会为null或undefined,因此可以安全地调用x的属性或方法。- 例如:
fileInput.value!.click(),我们使用!.来断言fileInput.value不会为null,以便可以调用其click()方法。 - 注意:使用
!.时要确保在使用之前进行了适当的空值检查,以避免潜在的运行时错误。
?.(可选链操作符)?.是 TypeScript 和 JavaScript 中的可选链操作符,用于访问可能为null或undefined的属性或方法,而无需手动进行空值检查。x?.prop表示如果x不为null或undefined,则访问x.prop;如果x为null或undefined,则整个表达式的结果为undefined。- 例如:
fileInput.value?.click(),我们使用?.来访问fileInput.value的click()方法,如果fileInput.value为null或undefined,则整个表达式的结果为undefined,不会引发错误。 ?.运算符还支持链式操作,例如:obj?.prop1?.prop2。
总结:
!.是非空断言操作符,用于断言一个值不会为null或undefined,以便可以安全地访问其属性或方法。?.是可选链操作符,用于访问可能为null或undefined的属性或方法,而无需手动进行空值检查。
