타입 별칭은 정의한 타입에 대해 나중에 쉽게 참고할 수 있게 이름을 부여하는 것과 같다.
string
, number
와 같은 간단한 타입 뿐만 아니라 인터페이스 레벨의 복잡한 타입에도 별칭을 부여할 수 있다.
type 🔸Person = {
name: string;
age: number;
};
var jihu: 🔸Person = {
name: "지후",
age: 22,
};
type 🔹MyString = string;
var str: 🔹MyString = "hello";
type 🔘Todo = { id: number; title: string; done: boolean };
function getTodo(todo: 🔘Todo) {}
이는 인터페이스와 굉장히 비슷해보이지만 다른 차이점이 있다.
객체의 속성 타입을 인터페이스로 정의했을 때와 타입 별칭으로 정의했을 때, 커서를 올려 보면 프리뷰로 다르게 나타난다.
그리고 타입 별칭과 인터페이스의 가장 큰 차이점은 타입의 확장 가능 / 불가능 여부다. 인터페이스는 확장이 가능하지만, 타입 별칭은 확장이 불가능하다. 따라서 type 보다는 interface로 선언해서 사용하는 것이 좋다.