Skip to content

null和undefined

JavaScript 有两个原始值用于表示不存在或未初始化的值: null 和 undefined . TypeScript 有两个对应的同名类型。这些类型的行为取决于您是否设置 strictNullChecks 选择。

  • strictNullChecks 关闭

    使用false,仍然可以正常访问的值,并且可以将值分配给任何类型的属性。这类似于没有空检查的语言(例如 C#、Java)的行为方式。缺乏对这些值的检查往往是错误的主要来源;如果在他们的代码库中这样做可行,我们总是建议大家打开。

  • strictNullChecks 打开

    使用true,你需要在对该值使用方法或属性之前测试这些值。就像在使用可选属性之前检查一样,我们可以使用缩小来检查可能的值:

typescript
  function doSomething(x: string | null) { 
  if (x === null) { 
    // 做一些事 
  } else { 
    console.log("Hello, " + x.toUpperCase()); 
  } 
}
  • 非空断言运算符( ! 后缀)

TypeScript 也有一种特殊的语法 null, undefined,可以在不进行任何显式检查的情况下,从类型中移除和移除类型。 ! 在任何表达式之后写入实际上是一种类型断言,即该值不是 null or undefined

typescript
function liveDangerously(x?: number | null) { 
  // 正确 
  console.log(x!.toFixed()); 
}

就像其他类型断言一样,这不会更改代码的运行时行为,因此仅 ! 当你知道该值不能是 null 或 undefined 时使用才是重要的。