// ts默认行为:出入联合类型时,会遍历其每个成员类型,然后输出其对应类型的联合类型 type toArray<T> = T extends any ? T[] : never; type strArrOrNumArr = toArray<string | number>; // type strArrOrNumArr = string[] | number[]
// 阻止默认行为:可以在extends关键字的每一边用方括号括起来。 type ToArrayNonDist<T> = [T] extends [any] ? T[] : never; type StrArrOrNumArr = ToArrayNonDist<string | number>; // type StrArrOrNumArr = (string | number)[]