【问题标题】:null is not assignable to void when flag --strictNullChecks is enabled启用标志 --strictNullChecks 时,null 不可分配给 void
【发布时间】:2019-10-17 22:05:46
【问题描述】:

根据 TypeScript 文档:

但是,当使用 --strictNullChecks 标志时,nullundefined 只能分配给 void它们各自的类型。这有助于避免许多常见错误。如果你想传入一个字符串或者 null 或 undefined,你可以使用联合类型 string |空 |未定义。再一次,稍后将详细介绍联合类型。

但是,当我尝试以下代码 sn-ps:

// This worked correctly
let voidIsUndefined: void = undefined;

// While following code thrown a compilation error "Type 'null' is not assignable to type 'void'."
let voidIsNull: void = null;

它并没有完全按预期工作。

根据文档,我应该能够将 null 分配给 void 类型。有人可以解决这个疑问吗?

【问题讨论】:

  • 这是设计使然。 Void 是一个只存在于类型空间中的概念。从类型系统的角度来看,缺少 return 语句的函数会被认为是无效的,但实际上返回的是未定义的值。

标签: typescript


【解决方案1】:

TypeScript docs 具有误导性,您感到困惑是正确的。这里有个问题:https://github.com/microsoft/TypeScript-Handbook/issues/468

【讨论】:

  • 感谢@Shaun Luttin 的澄清。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 2018-01-04
  • 1970-01-01
  • 2021-09-23
  • 2021-03-10
  • 2019-05-12
  • 2017-12-29
相关资源
最近更新 更多