ModifierKeys에서, 이전 값의 우선 순위는 뒤에 있는 값의 우선순위보다 높다;ModifierKeys provided, the priority of the previous value is higher than the latter value; that is, cmd ctrl is OK, but ctrl cmd is not allowed.type Combs<T extends string[]> =
T extends [infer Start extends string,...infer Rest extends string[]]?
`${Start} ${Rest[number]}`|Combs<Rest>
:never
여타 조합문제와 비슷하게 재귀로 접근한다.
`${특정문자}${string union}` 타입은 분배된다는 점을 이용한 풀이이다.
예를 들어 `${'A'}${'B'|'C'}`는 'AB'|'AC'와 같다.