유니온 타입(Union Type)이란?
`|`를 활용해서 타입을 OR로 엮는 타입. OR이기 때문에 유니온 타입으로 나열된 타입들 중 하나만 만족해도 된다.
type Animal = 'dog' | 'cat';
let pet: Animal;
pet = 'dog'; // OK
pet = 'cat'; // OK
pet = 'fish'; // Error!
인터섹션 타입(Intersection Type)이란?
`&`를 활용해서 타입을 AND로 엮는 타입. AND이기 때문에 인터섹션 타입으로 나열된 타입들 모두 만족해야 한다.
type Name = { name: string };
type Age = { age: number };
type Person = Name & Age;
const p: Person = {
name: 'Charlie',
age: 30
}; // OK
const q: Person = {
name: 'Dave'
}; // Error! age 빠짐
const r: Person = {
age: 40
}; // Error! name 빠짐
String & number 가능한가?
인터섹션 타입에서 string 타입과 number 타입을 인터섹션 타입으로 설정할 수 있을까요? 결과는 안됩니다. 하지만 이때 코드 상 에러가 나지는 않습니다. 다만 string과 number를 모두 만족하는 타입은 존재할 수 없으므로 해당 인터섹션 타입은 never 타입이 됩니다.
type Impossible = string & number;
// Impossible은 결국 never 타입
const x: Impossible = 'hello'; // Error
const y: Impossible = 123; // Error
'백엔드 > Node.js' 카테고리의 다른 글
[TS] 타입가드(Type Guard)란? (0) | 2025.04.09 |
---|---|
[TS] 타입 단언(Type Assertion)이란? (0) | 2025.04.09 |
[TS] 타입스크립트 typeof 와 keyof (0) | 2025.04.09 |
[NodeJS]이벤트 루프 동작 이해하기 (0) | 2025.03.19 |
[JS] 원시 타입, 참조 타입에 대한 이해 (0) | 2025.01.29 |