[TS] Omit
Omit<T, K> 타입은 주어진 타입 T에서 특정 속성 K를 제거한 새로운 타입을 생성합니다.
즉, 기존 타입의 일부 속성을 제외한 타입이 필요할 때 Omit을 사용하면 매우 간결하게 원하는 타입을 만들 수 있습니다.
사용법
예를 들어, 다음과 같이 Course 인터페이스가 있다고 가정해 봅니다.
export interface Course {
title: string;
subtitle: string;
courseSlug: string;
content: string;
thumbnail: string;
video: string;
rating: number;
reviewsCount: number;
studentCount: number;
reviewsUrl: string;
inflearnUrl: string;
gymcodingUrl: string;
}
이제, Course 인터페이스에서 rating, reviewsCount, studentCount 속성은 제외하고 다른 속성들에 추가로 path 속성을 포함하는 새로운 타입이 필요하다고 해봅시다.
export interface CourseWithPath
extends Omit<Course, "rating" | "reviewsCount" | "studentCount"> {
path: string;
rating: string;
reviewsCount: string;
studentCount: string;
}
위 코드에서 Omit<Course, "rating" | "reviewsCount" | "studentCount">는 Course 타입에서 세 가지 속성을 제거한 새로운 타입을 만듭니다. 그리고 이 타입에 새로운 속성들(path, rating, reviewsCount, studentCount)을 추가함으로써 원하는 결과를 얻습니다.
왜 Omit을 사용할까?
간결성
기존 타입에서 일부 속성을 제외한 새 타입을 만들 때, 일일이 모든 속성을 다시 작성할 필요가 없습니다.
Omit을 사용하면 필요한 속성만 제외하고 나머지를 그대로 재사용할 수 있습니다.
유지보수 용이성
원래 타입이 변경되면, Omit을 통해 생성된 타입도 자동으로 업데이트됩니다.
예를 들어, Course 타입에 새로운 속성이 추가된다면, Omit으로 제거한 속성 외의 속성은 자동으로 포함됩니다.
가독성
코드가 간결해지고, 의도가 명확해집니다.
"이 타입은 Course에서 이 세 가지 속성을 뺀 나머지를 사용한다"라는 의도를 한눈에 파악할 수 있습니다.