타입스크립트에서 Exclude와 Extract의 차이는 무엇인가요?
_____A1:
- `Exclude
- `Extract
---
Q2: Exclude의 기본 용법은 무엇인가요?
A2:
```typescript
type Result = Exclude<'a' | 'b' | 'c', 'a' | 'c'>; // 'b'
```
- `'a' | 'b' | 'c'` 중 `'a'`와 `'c'` 타입을 제거해서 결과는 `'b'` 타입입니다.
---
Q3: Extract의 기본 용법은 무엇인가요?
A3:
```typescript
type Result = Extract<'a' | 'b' | 'c', 'a' | 'c'>; // 'a' | 'c'
```
- `'a' | 'b' | 'c'` 중 `'a'`와 `'c'` 타입만 추출해서 `'a' | 'c'` 타입이 됩니다.
---
Q4: Exclude와 Extract는 어떤 경우에 주로 사용되나요?
A4:
- `Exclude`는 특정 타입 집합에서 일부 타입을 제거하고 싶을 때 사용합니다. (예: 특정 옵션 제외)
- `Extract`는 두 타입 집합 사이 공통되는 타입만 골라낼 때 유용합니다. (예: 공통된 타입만 허용)
---
Q5: 예시로 두 타입의 차이를 설명해주실 수 있나요?
A5:
type A = 'x' | 'y' | 'z';
type B = 'y' | 'z' | 'w';
type Excluded = Exclude; // 'x' -> A 에서 B에 포함된 'y', 'z' 제거
type Extracted = Extract; // 'y' | 'z' -> A와 B 모두에 있는 타입만 추출
```
---
Q6: Exclude와 Extract의 반환 타입은 항상 유니언 타입인가요?
A6:
네, 두 제네릭 유틸리티 타입 모두 기본적으로 유니언 타입을 반환하며, 입력 타입과 조건에 따라 단일 타입 또는 빈 타입(`never`)일 수도 있습니다.
---
Q7: 타입스크립트 내부에서 Exclude와 Extract는 어떻게 작동하나요?
A7:
- TypeScript는 유니언 타입의 각 원소별로 조건부 타입을 평가해 제거 및 추출 작업을 수행합니다.
- `Exclude
- `Extract
---
Q8: Exclude와 Extract는 기본 제공 타입인가요?
A8:
네, 두 타입은 타입스크립트 내장 제네릭 타입 유틸리티로 `lib.es5.d.ts` 등 기본 라이브러리에 포함되어 있습니다.
---
요약
- `Exclude
- `Extract
두 타입 모두 타입 집합을 조작할 때 매우 유용한 조건부 타입 유틸리티입니다.
TypeScript에서는 다양한 유틸리티 타입을 제공하는데, 그 중 `Exclude`와 `Extract`는 두 개의 중요한 유틸리티 타입입니다.
이 두 타입은 특정 타입 집합에서 다른 타입을 포함하거나 제외하는 데 사용됩니다.
하지만 그 목적과 사용 방식은 다릅니다.
Exclude `Exclude`는 주어진 타입 집합에서 특정 타입을 제외하는 데 사용됩니다.
이 유틸리티 타입은 두 개의 타입 인자를 받습니다: 첫 번째 인자는 원본 타입 집합이고, 두 번째 인자는 제외할 타입입니다.
결과적으로 `Exclude`는 첫 번째 타입 집합에서 두 번째 타입을 제거한 새로운 타입을 반환합니다.
예시 ```typescript type A = 'a' | 'b' | 'c'; type B = Exclude; // B는 'a' | 'c'가 됩니다.
``` 위의 예시에서 `A`는 `'a'`, `'b'`, `'c'`의 유니온 타입입니다.
`Exclude`는 `A`에서 `'b'`를 제외한 `'a' | 'c'` 타입을 반환합니다.
Extract 반면에 `Extract`는 주어진 타입 집합에서 특정 타입을 추출하는 데 사용됩니다.
`Extract` 역시 두 개의 타입 인자를 받습니다: 첫 번째 인자는 원본 타입 집합이고, 두 번째 인자는 포함할 타입입니다.
결과적으로 `Extract`는 첫 번째 타입 집합에서 두 번째 타입과 일치하는 타입만을 포함하는 새로운 타입을 반환합니다.
예시 ```typescript type A = 'a' | 'b' | 'c'; type B = Extract; // B는 'b' | 'c'가 됩니다.
``` 위의 예시에서 `Extract`는 `A`에서 `'b'`와 `'c'`를 추출하여 `'b' | 'c'` 타입을 반환합니다.
차이점 요약 1. 목적 : - `Exclude`: 특정 타입을 제외하여 새로운 타입을 생성합니다.
- `Extract`: 특정 타입을 추출하여 새로운 타입을 생성합니다.
2. 인자 : - 두 타입 모두 두 개의 인자를 받지만, `Exclude`는 첫 번째 타입에서 두 번째 타입을 제거하고, `Extract`는 첫 번째 타입에서 두 번째 타입과 일치하는 타입을 선택합니다.
3. 결과 : - `Exclude`는 주어진 타입 집합에서 특정 타입을 제거한 결과를 반환합니다.
- `Extract`는 주어진 타입 집합에서 특정 타입과 일치하는 타입만을 포함한 결과를 반환합니다.
결론 TypeScript의 `Exclude`와 `Extract`는 타입 조작을 위한 강력한 도구입니다.
이 두 유틸리티 타입을 이해하고 적절하게 사용하면, 복잡한 타입 구조를 보다 쉽게 관리하고, 코드의 가독성과 유지보수성을 높일 수 있습니다.
타입스크립트를 사용할 때 이러한 유틸리티 타입을 잘 활용하는 것이 중요하며, 이를 통해 더욱 안전하고 효율적인 코드를 작성할 수 있습니다.
작성자:
정하연 [비회원]
| 작성일자: 1년 전
2024-09-10 05:32:14
조회수: 254 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 254 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.