Typescript類型體操 - Combination

題目

中文

給定一個字符串數組, 實現它的全排列組合.

English

Given an array of strings, do Permutation & Combination.
It's also useful for the prop types like video controlsList

// expected to be `"foo" | "bar" | "baz" | "foo bar" | "foo bar baz" | "foo baz" | "foo baz bar" | "bar foo" | "bar foo baz" | "bar baz" | "bar baz foo" | "baz foo" | "baz foo bar" | "baz bar" | "baz bar foo"`
type Keys = Combination<['foo', 'bar', 'baz']>

答案

type Combination<
  T extends string[],
  All = T[number],
  Item = All
> = Item extends string
  ? Item | `${Item} ${Combination<[], Exclude<All, Item>>}`
  : never;

#11027 抄來的解法, 很妙!

在線演示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章