TypeScript에 대한 간단한 정리 - 07. 타입 별칭(Alias)

2024. 12. 20. 15:30Programming Language/Node.js

타입 별칭은 타입에 이름을 붙이는 것을 말한다.

이 타입 별칭을 사용해서 기본 타입, 복잡한 객체 타입, 유니온 타입등 과 같은 타입을 재사용할 수 있고, 코드의 가독성과 유지보수를 쉽게 할 수 있다.

 

타입 별칭은 type이란 키워드를 사용해서 정의하고 인터페이스와 비슷하나 더 유연한 방식으로 타입을 표현하여 사용이 가능하다.

 

타입별칭의 기본적인 문법은 

type 별칭명 = 타입;

과 같이 사용하고 타입에는 기본타입, 객체타입, 유니온타입, 인터섹션 타입등 어떠한 타입도 들어갈 수 있다.

 

기본타입에 대해서 별칭을 사용하면 

type ID = string;

const userId : ID = "testUser";
const keyId : ID = "Key123"

과 같이 사용이 가능하다.

 

객체 타입에 대해서 별칭을 사용하면 

type User {
	name : string;
    age : number;
}

const user : User {
    name : "Bob",
    age : 30
}

와 같이 사용한다.

 

유니온 타입에서 별칭을 사용한다면 

type UnionType = "1" | "2" | "3";

const unionNum : UnionType = "1";

와 같이 사용하면 된다.

유니온 타입으로 별칭을 선언한다면 유니온 값에 대해서만 값을 할당할 수 있게 된다.

 

함수 타입에 별칭을 사용한다면 

type FuncTest = (n1 : number, n2 : number) => nubmer;

const funcCaller : FuncTest = (x , y) => x + y;

와 같이 사용한다.

 

인터섹션 타입에 별칭을 사용한다면 

type Name = {
	name : string;
}

type age = {
    age : number;
}

type Person = Name & Age;

const person : Person = {
	name : "James",
    age : 20
}

 

이렇게 사용하는 방식을 보면 타입별칭과 인터페이스를 사용하는 방식이 비슷한걸 볼 수 있는데 서로의 차이점이 있다.

특징타입  별칭 (Type Alias) 인터페이스 (Interface)
기본 타입 표현 가능 (ex. type ID = string;) 불가능
유니온/인터섹션 타입 가능 ( ex. `type Status = "active" "inactive";`)
확장 인터섹션(&)을 사용하여 확장 가능 extends 키워드를 사용하여 확장 가능
병합 동일 이름의 타입은 병합되지 않음 동일 이름의 인터페이스는 병합 가능

 

그래서 인터페이스의 경우는 객체의 구조를 정의하고 확장하거나 병합이 필요한 경우 사용하고 타입 별칭의 경우는 기본타입, 유니온 타입 등등의 복잡한 타입의 조합들을 표현해야 하는 경우 사용하게 된다.