Typescript 启用标志--strictNullChecks时,null不可分配给void

Typescript 启用标志--strictNullChecks时,null不可分配给void,typescript,Typescript,根据TypeScript文档: 但是,当使用--stricnullchecks标志时,null和undefined仅可分配给void及其各自的类型。这有助于避免许多常见错误。如果要传入字符串或null或undefined,可以使用union类型字符串| null | undefined。下面再次介绍有关联合类型的更多信息 但是,当我尝试以下代码片段时: // This worked correctly let voidIsUndefined: void = undefined; // Whil

根据TypeScript文档:

但是,当使用--stricnullchecks标志时,null和undefined仅可分配给void及其各自的类型。这有助于避免许多常见错误。如果要传入字符串或null或undefined,可以使用union类型字符串| null | undefined。下面再次介绍有关联合类型的更多信息

但是,当我尝试以下代码片段时:

// 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语句的函数将被视为无效,但实际上返回未定义的值。感谢@Shaun Luttin的澄清。