타입스크립트 초창기에 type alias는 interface에 비해 할 수 없는 것들이 많았다
그러나 타입스크립트가 계속 업데이트 되면서 interface에서 할 수 있었던 기능들이 type alias에도 많이 추가가되었다
예를 들어 extends는 type alias에서 할 수 없었는데 타입스크립트가 업데이트 되면서 현재는 다음과 같이 type alias에서도 extends를 할 수 있다.
interface MemoInterface = {
title: string;
description: string
}
interface ColorMemoInterface extends MemoInterface {
color: string;
}
type MemoType = {
title: string;
description: string;
}
type ColorMemoType = MemoType & {color: string}
type alias와 interface 중에 무엇을 써야할까?
예전에는 type alias에 지원되는 것이 interface보다 많이 없어서 interface를 쓰도록 권장했다. 그러나 지금 type alias가 많이 강력해졌기 때문에 무조건 interface만 쓰는 것이 아니라 개념적으로 구분하여 쓰는 것이 좋다
개념적으로 보면 다음과 같다
interface -> 규약, 규격
type -> 데이터의 묘사
어떠한 규약, 규격을 따라야한다면 interface! 단순한 데이터의 묘사라면 type을 쓰도록 하자..!
나도 아직 언제 interface를 쓰고 type을 써야 하는지 확실한 감이 있는 것은 아니지만 이러한 생각을 갖고 계속 개발을 하다보면 감이 생길거라 믿는다