해당 게시글은
강의 사이트, 인프런에서 이정환님이 진행하시는
'한 입 크기로 잘라먹는 타입스크립트' 를
들어보며 블로그를 작성하려고 합니다.
다음 게시글 내용은 해당 강의에 핸드북의 내용으로
출처는 다음과 같습니다.
https://ts.winterlood.com/7250edd7-a3fd-4662-b756-f11f927c73f2
타입스크립트를 소개합니다 - 타입스크립트 개론
한 입 크기로 잘라먹는 타입스크립트
ts.winterlood.com
section10/chapter3.ts 에서 실습을 진행했습니다.
이번에 살펴볼 3가지 유틸리티 타입들은 모두 조건부 타입을 기반으로 만들어진 타입들이며
이미 만들어 본 적이 있기 때문에 간단히 복습으로 진행합니다.
Exclude<T, U>
Exclude 타입은 다음과 같이 T로부터 U 를 제거하는 타입입니다.
type A = Exclude<string | boolean, string>;
// boolean
직접 구현하면 다음과 같습니다.
type Exlcude<T, U> = T extends U ? never : T;
Extract<T, U>
Extract 타입은 다음과 같이 T로부터 U를 추출하는 타입입니다.
type B = Extract<string | boolean, boolean>;
// boolean
직접 구현하면 다음과 같습니다.
type Extract<T, U> = T extends U ? T : never;
ReturnType<T>
ReturnType 타입은 타입변수 T 에 할당된 함수 타입의 반환값 타입을 추출하는 타입입니다.
이 타입도 이전에 살펴본 적 있으므로 간단히 살펴보겠습니다.
type ReturnType<T extends (...args: any) => any> = T extends (
...agrs: any
) => infer R
? R
: never;
function funcA() {
return "hello";
}
function funcB() {
return 10;
}
type ReturnA = ReturnType<typeof funcA>;
// string
type ReturnB = ReturnType<typeof funcB>;
// number
'TypeScript > 한 입 크기로 잘라먹는 타입스크립트' 카테고리의 다른 글
[유틸리티 타입] Pick, Omit, Record (0) | 2023.07.24 |
---|---|
[유틸리티 타입] Partial, Required, Readonly (0) | 2023.07.24 |
[유틸리티 타입] 유틸리티 타입 소개 (0) | 2023.07.24 |
[조건부 타입] infer (0) | 2023.07.24 |
[조건부 타입] 분산적인 조건부 타입 (0) | 2023.07.21 |