启用`strictNullChecks`后,`void`类型和`undefined`文字类型有什么区别?

时间:2017-02-02 21:13:12

标签: typescript types undefined void

启用strictNullChecks

(u: undefined, v: void, n: null) => {
  v = u;
  u = v; // type error: Type 'void' is not assignable to type 'undefined'
  v = n; // type error: Type 'null' is not assignable to type 'void'
}

我认为类型void的某些值必须不属于undefined类型,但启用了strictNullChecks我不知道任何值。这个值是真的吗?

2 个答案:

答案 0 :(得分:4)

  

这是真的吗?

获取void类型值的唯一方法是调用void - 返回函数:

function f() { }
let x = f();

请注意,因为通过void类型的变量为非() => void - 返回函数设置别名是合法的,所以>获得的void值可能不实际上是值undefined,因此是子类型关系。

答案 1 :(得分:2)

您只能为void分配两种类型:undefinednull。正如名字所说的那样,虚空是任何东西的反面,没有任何东西,没有类型。

TypeScript Handbook:Basic Types