타입 챌린지 296 - Permutation

소파의 벨로그·2025년 3월 20일

타입챌린지

목록 보기
29/131

문제 링크

문제

주어진 유니언 타입을 순열 배열로 바꾸는 Permutation 타입을 구현하세요.

내 풀이

type PermutationImpliment<T,U=T>=
  [T] extends [never]?
	[]
  	:T extends U?
    	[T,...PermutationImpliment<Exclude<U,T>>]
    	:never

type Permutation<T> = PermutationImpliment<T>

분배 법칙을 쓰기 위해 유니온 타입인 U를 지정해줬다. 또, 사용처에서 U를 건들이지 못하도록 구현체를 덮는 값을 실제 타입으로 지정하였다.

never 분기처리를 하지 않으면 값이 아예 나오지를 않아서 never 분기 처리를 하였다.

다른 사람의 풀이

추천 답안도 나의 풀이와 유사하였다.

관련 개념

nevernever을 상속하지 못한다. 그래서 [never] extends [never]와 같은 형태로 조건 검사를 해야한다.

또, never가 들어가는 분배법칙은 적용되지 않는다.

이와 관련해서, 추후로 블로그에 글을 작성하고 이곳에 링크를 남기겠다

참고자료

https://github.com/type-challenges/type-challenges/issues/614

0개의 댓글