在打字稿中,这段代码是有效的并且编译,但我不明白为什么:
const a: any = "Not void";
const x: void = a;
为什么允许这样做?文档说void是任意的,所以将any赋给void看起来像是一个错误(https://www.typescriptlang.org/docs/handbook/basic-types.html)
答案 0 :(得分:2)
文档说:
无效有点像与任何
相反
所以它不是完全与any
相反
它还说:
声明void类型的变量没有用,因为你只能这样做 为它们分配undefined或null
但你也可以这样做:
const x: void = "" as null;
同样适用于any
:
const x: void = "" as any;
原因是当您使用any
时,您基本上告诉编译器该值可以是任何类型,并且它不应该键入检查它。
any
包含所有可能的类型,包括null
,undeinfed
和void
。
您始终可以使用any
绕过编译器类型检查,更多示例:
const y: number = "" as any;
const a: string = 0 as any;