[한입 TS 챌린지] Day 13

woodstock·2024년 2월 5일
0
post-thumbnail

강의 진도

  • 조건부 타입 소개
  • 분산적인 조건부 타입
  • infer - 조건부 타입 내에서 타입 추론하기

관련 게시글

진행 날짜

2024년 2월 5일

Mission

Quiz 1.

다음 요구사항을 만족하는 IsProductKey 타입을 완성하세요

  • IsProductKey 타입은 조건부 타입으로 다음 조건에 따라 각각 다른 타입으로 결정됩니다.
    • T가 Product의 key(프로퍼티 이름)중 하나일 경우 결과는 true 타입이 됩니다.
    • T가 Product의 key(프로퍼티 이름)중 하나가 아닐 경우 결과는 false 타입이 됩니다.
    • 예를 들면 다음과 같습니다.
      • ex) IsProductKey<"id"> 타입은 true 타입이 됩니다.
      • ex) IsProductKey<"author"> 타입은 false 타입이 됩니다.
interface Product {
  id: number;
  name: string;
  price: number;
  seller: {
    id: number;
    name: string;
    company: string;
  };
}

type IsProductKey<T> = any;

정답

type IsProductKey<T> = T extends keyof Product ? true : false;


Quiz 2.

다음 조건을 만족하는 Extract<T, U> 타입을 구현하세요

  • Extract<T, U> 타입은 T로부터 U만 추출하는 타입입니다.
    • ex) Extract<string | boolean, boolean>은 boolean 타입이 됩니다.
    • ex) Extract<number | string, string>은 string 타입이 됩니다.
type Extract<T, U> = any;

정답

type Extract<T, U> = T extends U ? T : never;


Quiz 3.

배열 타입의 요소를 추출하는 InferArrayType 타입을 구현하세요

type InferArrayType<T> = any;

정답

type InferArrayType<T> = T extends (infer R)[] ? R : never;


profile
해내는 사람

0개의 댓글