在类型系统中实现类似于 Python 中 any
函数。类型接收一个数组,如果数组中任一个元素为真,则返回 true
,否则返回 false
。如果数组为空,返回 false
除了 false
、0
、''
、null
、undefined
、空对象、空数组外,其他都是真
例如:
type Sample1 = AnyOf<[1, '', false, [], {}]> // expected to be true.
type Sample2 = AnyOf<[0, '', false, [], {}]> // expected to be false.
答案
type EmptyArray = [] type EmptyObject = { [k: keyof any]: never } type Falsely = false | 0 | '' | null | undefined | EmptyArray | EmptyObject type AnyOf<T extends readonly any[]> = T[number] extends Falsely ? false : true