Skip to content

any

TypeScript 还有一个特殊类型 any ,当你不希望某个特定值导致类型检查错误时,可以使用它。

当一个值的类型是 any 时,可以访问它的任何属性,将它分配给任何类型的值,或者几乎任何其他语法上的东西都合法的

typescript
let obj: any = { x: 0 }; 
// 以下代码行都不会抛出编译器错误。 
// 使用'any'将禁用所有进一步的类型检查 
obj.foo(); 
obj(); 
obj.bar = 100; 
obj = "hello"; 
const n: number = obj;

但在运行环境下执行代码可能是错误的:

进入到 dist 目录中,在 node 环境里运行代码,果然报错了。 当你不想写出长类型只是为了让 TypeScript 相信特定的代码行没问题时, any 类型很有用。

  • noImplicitAny

当不指定类型时,并且 TypeScript 无法从上下文推断它时,编译器通常会默认为 any

但是,您通常希望避免这种情况,因为 any 没有进行类型检查。使用编译器标志 noImplicitAny 将任何隐式标记 any 为错误。这个配置我们在前面讲到过。