为什么可以在typescript中为void类型分配any类型的变量

时间:2017-04-27 19:08:58

标签: typescript

在打字稿中,这段代码是有效的并且编译,但我不明白为什么:

const a: any = "Not void";

const x: void = a;

为什么允许这样做?文档说void是任意的,所以将any赋给void看起来像是一个错误(https://www.typescriptlang.org/docs/handbook/basic-types.html

1 个答案:

答案 0 :(得分:2)

文档说:

  

无效有点像与任何

相反

所以它不是完全any相反 它还说:

  

声明void类型的变量没有用,因为你只能这样做   为它们分配undefined或null

但你也可以这样做:

const x: void = "" as null;

同样适用于any

const x: void = "" as any;

原因是当您使用any时,您基本上告诉编译器该值可以是任何类型,并且它不应该键入检查它。
any包含所有可能的类型,包括nullundeinfedvoid

您始终可以使用any绕过编译器类型检查,更多示例:

const y: number = "" as any;
const a: string = 0 as any;