개발/TIL

[Typescript] type 과 interface의 차이

ash_ 2023. 8. 4. 17:50

next 프로젝트를 하다가, 코드리뷰 중 interface 로 정의된 타입을 type으로 바꾸자는 이야기가 나와서 둘의 차이점이 뭔지 찾아보게 되었다.

 

 

ChatGPT 답변 :

Type과 Interface는 TypeScript에서 타입을 정의하는 두 가지 주요 방법입니다. 두 방법은 비슷한 목적을 가지고 있지만, 몇 가지 차이점이 있습니다.

---
Type (타입 별칭):
type 키워드를 사용하여 타입을 정의합니다.
주로 유니온(Union), 인터섹션(Intersection), 나머지(rest) 타입 등을 사용할 때 유용합니다.
새로운 타입을 정의하고 이름을 부여할 수 있습니다.
유니온 타입: type MyUnion = string | number;
인터섹션 타입: type MyIntersection = { prop1: string } & { prop2: number };

Interface:
interface 키워드를 사용하여 타입을 정의합니다.
주로 객체의 구조를 정의할 때 사용됩니다.
기존의 타입을 확장하여 새로운 타입을 정의할 수 있습니다.
유니온 타입 및 인터섹션 타입과 같은 고급 타입 지원이 제한적입니다.
extends를 사용하여 다른 인터페이스를 상속할 수 있습니다.
---

일반적으로, 객체의 구조를 설명하기 위해서는 인터페이스를 사용하고, 유니온 타입이나 인터섹션 타입 등의 복잡한 타입을 사용할 때는 타입 별칭을 사용하는 것이 좋습니다.
다만, 최근 TypeScript 버전에서는 인터페이스와 타입 별칭 간의 차이가 줄어들고 있으며, 두 방법을 혼용하여 사용할 수 있습니다. 어떤 방법을 사용할지는 개인의 취향이나 팀의 코딩 가이드에 따라 달라집니다.