Type Alias 의 장단점
장점
- 유니온(Union) 및 인터섹션(Intersection) 타입을 정의할 수 있습니다.
- type 키워드를 사용하면 여러 타입을 조합하여 새로운 타입을 정의할 수 있습니다.
- 커스텀 타입 정의 용이: 복잡한 타입을 한 번에 정의하기 쉽고 가독성이 좋습니다.
- 조건부 타입 사용 가능: 조건부 타입을 사용하여 타입을 더 정교하게 정의할 수 있습니다.
- 클래스 타입 정의: 클래스 타입을 포함하여 다양한 타입을 정의할 수 있습니다.
단점
- 확장이 어려움: 이미 선언된 타입에 추가 속성을 쉽게 확장할 수 없습니다.
- 타입 검사의 한계: 때로는 타입 별칭을 사용하면 타입 검사가 덜 엄격해질 수 있습니다.
Interface의 장단점
장점
- 확장이 용이함: 이미 선언된 인터페이스를 쉽게 확장하여 새로운 속성을 추가할 수 있습니다.
- 클래스와의 호환성: 클래스를 구현할 때 인터페이스를 사용하여 클래스가 필요한 메서드와 속성을 포함하도록 강제할 수 있습니다.
- 추가 속성 검사: 인터페이스를 사용하면 추가 속성이 있는지 확인하는 엄격한 검사가 가능합니다.
- 선언 병합: 동일한 이름의 인터페이스를 여러 곳에서 선언할 때, TypeScript는 이를 병합하여 하나의 인터페이스로 간주합니다.
단점
- 유니온(Union) 및 인터섹션(Intersection) 지원이 부족함: 인터페이스로 복잡한 타입을 정의하기 어려울 수 있습니다.
- 타입 조건 정의 어려움: 인터페이스로는 타입 조건을 정의하기 어렵습니다.
내가 생각하는 Type alias와 interface
내가 생각하는 Type alias와 interface는
서로 비슷하지만, 다른 장단점을 가지고 있고 용도에 맞게 사용한다면 좋은 선택지가 될 것 같습니다.
여러 사람들이 어떤 특정한 규격을 정하고 그 규격을 통해서 어떤 것이 만들어진다면 interface를 사용하는 것이 좋을 것 같다고 생각했습니다. 이 이유는 타입스크립트 뿐만 아니라 다른 프로그래밍 언어에서도 interface가 이러한 목적으로 사용되고 있어 가독성 측면에서 나을 것 같다고 생각했기 때문입니다.
ex) class의 규격을 정할때는 interface
구현이 목적이 아닌 어떠한 데이터를 담고 싶은지 묘사하고 싶을때에는 interface보다 type을 사용하면 좀더 좋을것 같습니다.