检查类型是否为未知类型

问题描述 投票:0回答:1

有没有办法检查类型参数

T
是否实际上是
unknown
类型?

我知道可以检查

any
解决方案在这里),但想知道
unknown

typescript
1个回答
8
投票

最简单的解决方案是这样的:

type IsUnknown<T> = unknown extends T ? true : never

但是,它也会为

true
返回
any
,因为它可以分配给任何类型。如果您需要处理这种情况,请借用
IsAny
的解决方案并执行以下操作:

type IsUnknown<T> = IsAny<T> extends never ? unknown extends T ? true : never : never

type A = IsUnknown<unknown> // true
type B = IsUnknown<any> // never
type C = IsUnknown<never> // never
type D = IsUnknown<string> // never

游乐场链接

© www.soinside.com 2019 - 2024. All rights reserved.