2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

타입스크립트에서 Pick과 Omit의 차이는 무엇인가요?

_____
Q1: 타입스크립트에서 `Pick`이란 무엇인가요?
`Pick`은 기존 타입에서 특정 프로퍼티들만 선택하여 새로운 타입을 만드는 유틸리티 타입입니다. 예를 들어, 객체 타입에서 필요한 일부 속성들만 골라서 새로운 타입을 정의할 때 사용합니다.

Q2: `Omit`이란 무엇인가요?
`Omit`은 기존 타입에서 특정 프로퍼티들을 제외한 나머지 속성들만 모아 새로운 타입을 만드는 유틸리티 타입입니다. 즉, 특정 프로퍼티를 제거해서 타입을 만들고 싶을 때 사용합니다.

Q3: `Pick`과 `Omit`의 주요 차이점은 무엇인가요?
- `Pick`는 타입 `T`에서 키 `K`에 해당하는 프로퍼티만 선택 합니다.
- `Omit`는 타입 `T`에서 키 `K`에 해당하는 프로퍼티를 제외 하고 나머지를 모두 포함합니다.

Q4: `Pick`과 `Omit`을 사용하는 예시는 어떻게 되나요?
```typescript
interface User {
id: number;
name: string;
email: string;
password: string;
}

// Pick 사용: id와 name만 선택
type UserPreview = Pick;
// Omit 사용: password만 제외한 타입
type UserWithoutPassword = Omit;
```

Q5: 언제 `Pick`을 쓰고 언제 `Omit`을 써야 하나요?
- 필요한 속성이 소수일 때 는 `Pick`이 더 명확합니다.
- 제거하고 싶은 속성만 명확할 때는 `Omit`이 간결하게 표현할 수 있습니다.

Q6: `Pick`과 `Omit`은 내부적으로 어떻게 동작하나요?
- `Pick`는 `T`에서 `K`에 해당하는 키 집합만 골라서 새로운 타입을 만듭니다. (`K`는 `keyof T`의 하위 집합이어야 함)
- `Omit`는 `T`의 키들 중에서 `K`를 제외한 나머지 키들만 선택하여 타입을 만듭니다.

Q7: `Pick`과 `Omit` 모두 제네릭 타입인가요?
네, 두 타입 모두 제네릭이며 다음과 같이 정의되어 있습니다:
```typescript
type Pick = { [P in K]: T[P] };
type Omit = Pick>;
```

요약:
- `Pick`: 타입에서 특정 키만 골라서 타입을 만든다.
- `Omit`: 타입에서 특정 키를 제외하고 타입을 만든다.
용도에 따라 필요한 속성을 선택하거나 필요 없는 속성을 제외하는 데 편리하게 쓰입니다.
TypeScript에서 `Pick`과 `Omit`은 객체 타입을 조작하는 데 유용한 유틸리티 타입입니다.

이 두 가지는 비슷한 목적을 가지고 있지만, 그 사용 방식과 결과는 다릅니다.

아래에서 각각의 개념과 차이점을 자세히 설명하겠습니다.

1. Pick `Pick`은 주어진 타입에서 특정 속성만 선택하여 새로운 타입을 생성하는 유틸리티 타입입니다.

즉, 원래 객체의 일부 속성만을 포함하는 새로운 타입을 만들고 싶을 때 사용합니다.

사용법 ```typescript interface Person { name: string; age: number; email: string; } type PersonNameAndEmail = Pick; // PersonNameAndEmail 타입은 다음과 같습니다: // { // name: string; // email: string; // } ``` 위의 예제에서 `Pick`은 `Person` 인터페이스에서 `name`과 `email` 속성만을 선택하여 `PersonNameAndEmail` 타입을 생성합니다.

이로 인해 `PersonNameAndEmail` 타입은 `name`과 `email` 속성만을 포함하게 됩니다.



2. Omit `Omit`은 주어진 타입에서 특정 속성을 제외하고 새로운 타입을 생성하는 유틸리티 타입입니다.

즉, 원래 객체의 모든 속성 중에서 특정 속성만을 제외한 나머지를 포함하는 새로운 타입을 만들고 싶을 때 사용합니다.

사용법 ```typescript interface Person { name: string; age: number; email: string; } type PersonWithoutEmail = Omit; // PersonWithoutEmail 타입은 다음과 같습니다: // { // name: string; // age: number; // } ``` 위의 예제에서 `Omit`은 `Person` 인터페이스에서 `email` 속성을 제외하고 `name`과 `age` 속성만을 포함하는 `PersonWithoutEmail` 타입을 생성합니다.



3. 차이점 요약 - 기능적 차이 : - `Pick`은 특정 속성만 선택하여 새로운 타입을 생성합니다.

- `Omit`은 특정 속성을 제외하고 나머지 속성으로 새로운 타입을 생성합니다.

- 사용 예시 : - `Pick`은 필요한 속성만을 가져와서 사용하고자 할 때 유용합니다.

예를 들어, API 응답에서 특정 필드만 필요할 때 사용합니다.

- `Omit`은 불필요한 속성을 제거하고자 할 때 유용합니다.

예를 들어, 데이터베이스 모델에서 사용자 비밀번호와 같은 민감한 정보를 제외하고자 할 때 사용합니다.



4. `Pick`과 `Omit`은 TypeScript에서 객체 타입을 다루는 데 매우 유용한 도구입니다.

이 두 유틸리티 타입을 적절히 활용하면 코드의 가독성을 높이고, 타입 안전성을 강화할 수 있습니다.

객체의 속성을 선택하거나 제외하는 작업은 자주 발생하는 패턴이므로, 이 두 가지를 잘 이해하고 사용하는 것이 중요합니다.

작성자: 박재성 [비회원] | 작성일자: 1년 전 2024-09-10 05:32:14
조회수: 200 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.