타입 별칭은 새로운 타입 이름을 정의하는 데 사용됩니다.
코드의 가독성을 높이고 중복을 피할 때 유용합니다.
type Point = [number, number];
const point: Point = [3, 4];
유니온 타입은 여러 타입 중 하나가 될 수 있는 값을 정의할 때 사용됩니다.
| 연산자를 사용하여 여러 타입을 결합합니다.
type Result = string | number;
const result1: Result = 'Success';
const result2: Result = 42;
디스크리미네이티드 유니온 패턴은 유니온 타입을 사용할 때, 각 타입을 식별하기 위한 프로퍼티를 추가하는 패턴입니다.
이를 통해 조건부 로직을 작성할 때 편리하게 사용할 수 있습니다.
interface Circle {
kind: 'circle';
radius: number;
}
interface Square {
kind: 'square';
sideLength: number;
}
type Shape = Circle | Square;
function getArea(shape: Shape): number {
switch (shape.kind) {
case 'circle':
return Math.PI * shape.radius ** 2;
case 'square':
return shape.sideLength ** 2;
default:
throw new Error('Invalid shape');
}
}