null 和 undefined 类型
摘要:在本教程中,你将了解 TypeScript 中的 null
和 undefined
类型。
TypeScript null
和 undefined
类型简介
JavaScript 有两个原始值用于表示不存在或未初始化的值:null
和 undefined
。
TypeScript 有两个同名的相应类型。 这些类型的行为方式取决于您是否启用了 strictNullChecks 选项。
strictNullChecks
关闭状态
关闭 strictNullChecks
后,仍可以正常访问可能为 null
或 undefined
的值,并且可以将值 null
和 undefined
分配给任何类型的属性。 缺乏对这些值的检查往往是 bug 的主要来源;如果允许的话,建议打开 strictNullChecks
。
strictNullChecks
开启状态
启用 strictNullChecks
后,当值为 null
或 undefined
时,需要在对该值使用方法或属性之前测试这些值。就像在使用可选属性之前检查 undefined
一样,我们可以使用缩小范围来检查可能为 null
的值:
function doSomething(x: string | null) {
if (x === null) {
// do nothing
} else {
console.log("Hello, " + x.toUpperCase());
}
}
非空断言运算符 (后缀!)
TypeScript 还有一种特殊的语法,可以从类型中移除 null
和 undefined
,而无需进行任何显式检查。 在任一表达式之后追加一个感叹号 !
实际上是该值不为 null
或 undefined
的类型断言:
function liveDangerously(x?: number | null) {
// No error
console.log(x!.toFixed());
}
就像其他类型断言一样,这不会改变代码的运行时行为,因此仅在你确信该值不为 null
或 undefined
时使用 !
。
概括
null
和undefined
默认可以赋值给任何类型的数据。- 建议开启
strictNullChecks
以减少潜在的程序缺陷。