이 문서는 Google Cloud Translation API를 사용해 자동 번역되었습니다.
어떤 문서는 원문을 읽는게 나을 수도 있습니다.
TypeScript에서 새 유형을 생성하는 것은 개발자의 일반적인 작업입니다. 대부분의 경우 기존 유형을 기반으로 하지만 일부 속성이 제거된 새 유형을 만들어야 합니다. TypeScript는 생략 유형을 사용하여 이를 수행하는 편리한 방법을 제공합니다.
이 게시물에서는 TypeScript에서 생략 유형을 사용하여 기존 유형에서 속성을 제거하여 새 유형을 만드는 방법을 살펴보겠습니다.
생략 유형은 다른 유형에서 속성을 제거하여 새 유형을 생성할 수 있는 TypeScript의 내장 유틸리티 유형입니다. 원래 유형과 제거할 속성의 이름이라는 두 가지 유형 매개변수를 사용합니다.
생략 유형을 사용하기 위한 구문은 다음과 같습니다.
type NewType = Omit<OriginalType, 'Property1' | 'Property2'>;
이 예에서는 OriginalType
에서 속성 'Property1' 및 'Property2'를 제거하여 NewType
이라는 새 유형을 만듭니다.
몇 가지 예제를 만들어 Omit 유형이 실제로 어떻게 작동하는지 살펴보겠습니다.
name
, age
및 email
의 세 가지 속성을 가진 Person
이라는 인터페이스가 있다고 가정합니다.
interface Person {
name: string;
age: number;
email: string;
}
이제 email
속성을 제외하고 Person
과 동일한 속성을 가진 PersonWithoutEmail
이라는 새 유형을 생성하려고 합니다.
생략 유형을 사용하여 이를 달성할 수 있습니다.
type PersonWithoutEmail = Omit<Person, 'email'>;
결과 유형은 다음과 같습니다.
interface PersonWithoutEmail {
name: string;
age: number;
}
make
, model
, year
및 color
의 네 가지 속성이 있는 Car
라는 인터페이스가 있다고 가정합니다.
interface Car {
make: string;
model: string;
year: number;
color: string;
}
이제 car
와 year
및 color
속성을 제외하고 동일한 속성을 가진 CarSummary
라는 새 유형을 생성하려고 합니다.
생략 유형을 사용하여 이를 달성할 수 있습니다.
type CarSummary = Omit<Car, 'year' | 'color'>;
결과 유형은 다음과 같습니다.
interface CarSummary {
make: string;
model: string;
}
경우에 따라 일부 조건에 따라 유형에서 동적으로 속성을 제거해야 할 수도 있습니다. 예를 들어 이름
, 가격
및 설명
의 세 가지 속성이 있는 제품
이라는 인터페이스가 있다고 가정합니다.
interface Product {
name: string;
price: number;
description: string;
}
이제 description
속성을 제외하고 Product
와 동일한 속성을 갖지만 description
속성이 Product
유형에 존재하는 경우에만 ProductWithoutDescription
이라는 새 유형을 생성하려고 합니다.
이를 달성하기 위해 조건부 유형을 사용할 수 있습니다.
type ProductWithoutDescription = 'description' extends keyof Product
? Omit<Product, 'description'>
: Product;
이 예에서는 조건부 유형을 사용하여 제품
유형에 설명
속성이 있는지 확인합니다. 그렇다면 생략 유형을 사용하여 description
속성 없이 새 유형을 만듭니다. 그렇지 않으면 원래 제품
유형만 사용합니다.
생략 유형은 기존 유형에서 속성을 제거하여 새 유형을 쉽게 만들 수 있는 TypeScript의 강력한 유틸리티 유형입니다. 생략 유형을 사용하면 더 간결하고 유지 관리 가능한 코드를 작성할 수 있습니다.