한 입 크기로 잘라먹는 타입스크립트 - 맵드 타입 기반의 유틸리티 타입들 (Partial<T>, Required<T>, Readonly<T>)
1. Partial<T>
타입 변수로 전달된 특정 객체 타입의 모든 프로퍼티를 선택적 프로퍼티로 바꿔주는 타입.
- chapter1.ts
/**
* Partial<T>
* -> 부분적인, 일부분의
* -> 특정 객체 타입의 모든 프로퍼티를 선택적 프로퍼티로 바꿔주는 타입
*/
// 블로그 게시글 객체
interface Post {
title: string;
tags: string[];
content: string;
thumbnailURL?: string;
}
/* 원본 유틸리티 타입
type Partial<T> = {
[P in keyof T]?: T[P];
};
*/
// 직접 만들기 : 맵드 타입, 인덱스드 액세스 타입
type Partial<T> = {
[key in keyof T]?: T[key]; // 물음표 추가
};
// 게시글 임시저장
const draft: Partial<Post> = {
title: '제목 나중에 짓자'
, content: '초안...'
};
2. Required<T>
타입 변수로 전달된 특정 객체 타입의 모든 프로퍼티를 필수 프로퍼티로 바꿔주는 타입.
- chapter1.ts
...
/**
* Required<T>
* -> 필수의, 필수적인
* -> 특정 객체 타입의 모든 프로퍼티를 필수 프로퍼티로 바꿔주는 타입
*/
/* 원본 유틸리티 타입
type Required<T> = {
[P in keyof T]-?: T[P];
};
*/
// 직접 만들기 : 맵드 타입, 인덱스드 액세스 타입
type Required<T> = {
[key in keyof T]-?: T[key]; // -? 는 물음표를 빼겠다는 의미
};
const withThumbnailPost: Required<Post> = {
title: '한입 타스 후기'
, tags: ['ts']
, content: ''
, thumbnailURL: 'https://...'
};
3. Readonly<T>
타입 변수로 전달된 특정 객체 타입의 모든 프로퍼티를 읽기 전용 프로퍼티로 바꿔주는 타입.
- chapter1.ts
...
/**
* Readonly<T>
* -> 읽기전용, 수정불가
* -> 특정 객체 타입의 모든 프로퍼티를 읽기 전용 프로퍼티로 바꿔주는 타입
*/
/* 원본 유틸리티 타입
type Readonly<T> = {
readonly [P in keyof T]: T[P];
};
*/
// 직접 만들기 : 맵드 타입, 인덱스드 액세스 타입
type Readonly<T> = {
readonly [key in keyof T]: T[key]; // readonly 속성 추가
};
const readonlyPost: Readonly<Post> = {
title: '보호된 게시글 입니다.'
, tags: []
, content: ''
};
// 수정 불가
// readonlyPost.content = 'test';
한 입 크기로 잘라먹는 타입스크립트(TypeScript) 강의 | 이정환 Winterlood - 인프런
이정환 Winterlood | 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻♀️로 만들어드립니다., 프론
www.inflearn.com
'강의 실습 > 한 입 크기로 잘라먹는 타입스크립트(TypeScript)' 카테고리의 다른 글
조건부 타입 기반의 유틸리티 타입 - Exclude, Extract, ReturnType (1) | 2024.12.25 |
---|---|
맵드 타입 기반의 유틸리티 타입 2 - Pick, Omit, Record (0) | 2024.12.24 |
유틸리티 타입 소개 (0) | 2024.12.22 |
infer - 조건부 타입 내에서 타입 추론하기 (1) | 2024.12.21 |
분산적인 조건부 타입 (0) | 2024.12.17 |
댓글