是否可以使用打字稿条件检查确切的any
类型?
type IsAny<T> = T extends any ? true : never
type A = IsAny<any> // true
type B = IsAny<number> // never
type C = IsAny<unknown> // never
type D = IsAny<never> // never
答案 0 :(得分:8)
是的,您可以测试any
:
type IfAny<T, Y, N> = 0 extends (1 & T) ? Y : N;
type IsAny<T> = IfAny<T, true, never>;
type A = IsAny<any> // true
type B = IsAny<number> // never
type C = IsAny<unknown> // never
type D = IsAny<never> // never
对此的解释在this answer中。简而言之,any
是故意不健全的,并且违反了正常的类型规则。您可以检测到这种违规,因为它会让您疯狂地进行一些操作,例如将0
分配给1
。
答案 1 :(得分:0)