한 입 크기로 잘라먹는 타입스크립트 - 조건부 타입 기반의 유틸리티 타입들 (Exclude<T, U>, Extract<T, U>, ReturnType<T>)
1. Exclude<T, U>
T에서 U를 제거하는 타입.
- chapter3.ts
/**
* Exclude<T, U>
* -> 제외하다, 추방하다
* -> T에서 U를 제거하는 타입
*/
/* 원본 유틸리티 타입
type Exclude<T, U> = T extends U ? never : T;
*/
// 직접 만들기 : 조건부 타입(유니온 타입 전달시 분산적인 조건부 타입)
type Exclude<T, U> = T extends U ? never : T;
// 1 단계
// Exclude<string, boolean> |
// Exclude<boolean, boolean>
// 2 단계
// string |
// never (공집합)
// 최종
// string
type A = Exclude<string | boolean, boolean>;
2. Extract<T, U>
T에서 U를 추출하는 타입.
- chapter3.ts
...
/**
* Extract<T, U>
* -> T에서 U를 추출하는 타입
*/
/* 원본 유틸리티 타입
type Extract<T, U> = T extends U ? T : never;
*/
// 직접 만들기 : 조건부 타입(유니온 타입 전달시 분산적인 조건부 타입)
type Extract<T, U> = T extends U ? T : never;
type B = Extract<string | boolean, boolean>;
3. ReturnType<T>
함수의 반환값 타입을 추출하는 타입.
- chapter3.ts
...
/**
* ReturnType<T>
* -> 함수의 반환값 타입을 추출하는 타입
*/
/* 원본 유틸리티 타입
type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;
*/
// 직접 만들기 : 조건부 타입, infer(조건부 타입 내에서 타입 추론)
type ReturnType<T extends (...args : any) => any> = T extends (...args: any) => infer R ? R : never;
function funcA() {
return 'hello';
}
function funcB() {
return 10;
}
type ReturnA = ReturnType<typeof funcA>;
type ReturnB = ReturnType<typeof funcB>;
한 입 크기로 잘라먹는 타입스크립트(TypeScript) 강의 | 이정환 Winterlood - 인프런
이정환 Winterlood | 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻♀️로 만들어드립니다., 프론
www.inflearn.com
'강의 실습 > 한 입 크기로 잘라먹는 타입스크립트(TypeScript)' 카테고리의 다른 글
상태관리와 Props 1 (1) | 2024.12.27 |
---|---|
타입스크립트 리액트 시작하기 (0) | 2024.12.26 |
맵드 타입 기반의 유틸리티 타입 2 - Pick, Omit, Record (0) | 2024.12.24 |
맵드 타입 기반의 유틸리티 타입 1 - Partial, Required, Readonly (0) | 2024.12.23 |
유틸리티 타입 소개 (0) | 2024.12.22 |
댓글