如何测试/断言Typescript中的变量类型不是“ any”?
我不需要运行时检查,如果编译器收到检测到此错误的错误就足够了:
function notAny(x: (rejects type any)) { ...}
let foo: any = 'value'
// tsc should throw an error here
notAny(foo)
解决方案应该只检查一次,而不是整个项目(例如使用--noImplicitAny
)
答案 0 :(得分:2)
下面的代码应该可以工作。基本思想是any
是唯一的类型,同时是unknown
的基本类型和{}
底部(空)类型的
type IsAny<T> =
unknown extends T ? T extends {} ? T : never : never;
type NotAny<T> =
T extends IsAny<T> ? never : T;
function notAny<T>(x: NotAny<T>) { }
let foo: any = 'value'
notAny(foo); // error as expected