A', 'C', 'B'] | ['B', 'A', 'C'] | ['B', 'C', 'A'] | ['C', 'A', 'B'] | ['C', 'B', 'A']
看到这题立马联想到 TS 对多个联合类型泛型处理是采用分配律的...但触发的条件必须存在两个泛型,而题目传入的只有一个,我们只好创造第二个泛型,使其默认值等于第一个:
type Permutation
这样对本题来说,会做如下展开:
Permutation...,用泛型默认值来存储。...本题我们就用 Result 这个泛型存储打平后的结果,每次拿到数组第一个值,如果第一个值不是数组,则直接存进去继续递归,此时 T 自然是剩余的 Rest;如果第一个值是数组,则将其打平,此时有个精彩的地方...A[K] : never
)
}
只要知道 in keyof 支持元组,值部分用 extends 进行区分即可,很简单。