「重学TS 2.0 」TS 练习题第三十九题
Opened this issue · 5 comments
semlinker commented
实现 IsAny
工具类型,用于判断类型 T
是否为 any
类型。具体的使用示例如下所示:
type IsAny<T> = // 你的实现代码
type I0 = IsAny<never> // false
type I1 = IsAny<unknown> // false
type I2 = IsAny<any> // true
请在下面评论你的答案
zhaoxiongfei commented
type IsAny<T> = 0 extends 1 & T ? true : false;
type I0 = IsAny<never>; // false
type I1 = IsAny<unknown>; // false
type I2 = IsAny<any>; // true
思路: 利用任何类型和any交叉都等于any来实现。
981377660LMT commented
// unknown 只能赋给 unknown 或者 any
type IsAny<T> = [unknown] extends [T] ? ([T] extends [string] ? true : false) : false
type I0 = IsAny<never> // false
type I1 = IsAny<unknown> // false
type I2 = IsAny<any> // true
jackwangwj commented
type IsAny = [unknown] extends [T]
? [T] extends [string]
? true
: false
: false
type I0 = IsAny // false
type I1 = IsAny // false
type I2 = IsAny // true
ChangerHe commented
// 解法: any的特性是与任意值并得出的值为本身
// 我们随便找两个不同的值即可
type IsAny<T> = 'a' extends 'b' & T ? true : false
ChuTingzj commented
几何之美
// 实现 IsAny 工具类型,用于判断类型 T[] 是否为 any 类型。具体的使用示例如下所示:
// type IsAny<T[]> = // 你的实现代码
// type I0 = IsAny<never> // false
// type I1 = IsAny<unknown> // false
// type I2 = IsAny<any> // true
type IsAny<T> = T[] extends never[]
? false
: T[] extends string[]
? T[] extends number[]
? T[] extends boolean[]
? T[] extends object[]
? T[] extends unknown[]
? T[] extends symbol[]
? T[] extends null[]
? T[] extends undefined[]
? T[] extends bigint[]
? T[] extends any[]
? true
: false
: false
: false
: false
: false
: false
: false
: false
: false
: false
type I00 = IsAny<never> // false
type I11 = IsAny<unknown> // false
type I22 = IsAny<any> // true