들어가며

타입스크립트에서는 타입을 명시하기 위해서 다음과 같이 어노테이션을 사용한다.

let username: string;
let age: number;
1
2

각각의 타입들은 여러 번 중복 사용할 경우, 매번 명시하는 방법보다는 한 개의 타입을 명시하고 공통된 이름으로 사용하는게 유지보수 측면에서 이점을 가진다.

타입스크립트에서는 타입 별칭(Type Alias)를 통해, 참조할 수 있는 타입 변수를 만들 수 있도록 지원한다.

타입 별칭(Type Alias)

타입 별칭은 특정 타입이나 인터페이스를 참조할 수 있는 타입 변수를 의미한다. 다음과 같이 기존 변수를 선언할 때 타입을 명시했던 것처럼 사용할 수 있다.

type Username = string;
type Age = number;
1
2

타입스크립트에서는 타입 별칭까지 추론을 하지는 않으므로, 변수를 선언할 때 타입 변수를 명시해야 한다.

let username: Username = "홍길동";
let age: Age = 20;
1
2

타입 별칭은 객체에도 적용할 수 있으며, 다음과 같이 정의할 수 있다.

type User = {
  username: string;
  age: number;
  email: string;
};
1
2
3
4
5

타입 별칭에 제네릭의 사용도 가능하다.

type List<T> = T[];

const names: List<string> = ["유저1", "유저2", "유저3"];
const numbers: List<number> = [1, 2, 3, 4];
1
2
3
4

변수 선언과 마찬가지로 동일한 이름으로 여러 번 정의할 수는 없으며, let, const와 같이 블록 스코프를 가진다. 즉 외부에서 정의된 타입 변수는 다음과 같이 내부에서 재정의될 수 있다.

type Username = string;

if (true) {
  type Username = number;
}
1
2
3
4
5

타입 별칭을 통해서 사용할 타입을 명시하는 작업은 이름만 재정의한다고 봐야하며, 선언한 타입 변수으로 새롭게 타입을 만드는 것은 아니다. 그리고 타입 별칭은 트랜스파일링 시, 영향을 미치지 않으며 타입 추론을 위해서만 사용된다.

즉 타입 별칭은 복잡한 타입을 반복하여 작성하지 않도록 해주며, 타입 변수를 정의함으로써 통해 어떤 목적으로 사용했는지 쉽게 이해할 수 있도록 도와준다.

주의점

타입 별칭과 인터페이스는 비슷하면서도 타입의 확장이 불가능하다는 가장 큰 차이점이 존재한다. 즉 타입 별칭을 사용해야 하는 경우를 제외하고는 확장 가능한 인터페이스로 선언하는 것을 권장한다.

Last Updated:
Contributors: dailyuno