그동안 풀었던 타입스크립트 문제풀이 -2

woogi·2025년 4월 27일

TS챌린지

목록 보기
2/2
post-thumbnail

898 - Includes

// 처음에 쓴 코드 
// 밑 경우엔 A|B extends A true  -> 서브타입임으로 참으로 판단되기 떄문 
//  type IsEqual<T,U> = T extends U ? U extends T ? true : false : false



type IsEqual<X, Y> = 
  (<T>() => T extends X ? 1 : 2) extends
  (<T>() => T extends Y ? 1 : 2) 
    ? true 
    : false;


type Includes<T extends readonly any[], U> = T extends [infer First, ...infer Rest] ? IsEqual<First,U> extends true  ? true : Includes<Rest,U> : false
  
  • 기존의 작성했던 코드는 서브타입이 참으로 판단되는 문제가 있었다
  • 이를 방지하기 위해 함수형 비교식 각 매개변수를 비교하는 특성을 이용해서 비교를 진행했고 서브타입은 참이 되지 않게 할 수 있었다.

3057 - Push

 type Push<T extends readonly any[], U> = [...T , U]
  • 스프레드 연산자를 사용하는 쉬운 문제..

3060 - Unshift

type Unshift<T extends readonly  unknown[], U> = [U ,...T]
  • 마찬가지로 - 스프레드 연산자를 사용하는 쉬운 문제

3312 Parameters

type MyParameters<T extends (...args: any[]) => any> = T extends (...args: infer S) => any ? S : never
  • 함수를 타입에서 파라미터를 반환하는 식이다.
  • infer를 이용해 참일 시 파라미터 타입을 반환하도록 처리했다.
profile
https://www.hellowook.com

0개의 댓글