타입 챌린지 1130 - ReplaceKeys

소파의 벨로그·2025년 4월 1일

타입챌린지

목록 보기
41/131

문제 링크

문제

union type에 있는 키를 바꾸고, 만약 그 키가 일부 타입에 없으면 바꾸지않는 ReplaceKeys 타입을 구현해라. 이 타입은 제네릭 3개를 받는다.

Implement a type ReplaceKeys, that replace keys in union types, if some type has not this key, just skip replacing, A type takes three arguments.

내 풀이

type ReplaceKeys<U extends object, T extends keyof any, Y extends object> ={
  [R in keyof U]:R extends T?
                  R extends keyof Y?
                    Y[R]
                    :never
                  : U[R]
}

문제가 너무 복잡하고 요구사항도 제대로 기술되어 있지 않아서, 테스트 케이스를 통과시키는 풀이를 만들었다. U의 key 타입이 T에 있으면 Y[R]을 사용하고 그렇지 않으면 never를 사용한다. 만약 U의 key 타입이 T에 없으면 U[R]을 사용한다.

다른 사람의 풀이

많은 풀이가 비슷했다.

0개의 댓글