Interface와 Type의 차이는?
Updated: 2025-04-02
typescript
Interface와 Type
인터페이스와 타입 별칭은 모두 객체 타입을 정의할 수 있습니다. 객체 타입을 정의할 수 있다는 관점에서는 두 방법의 차이점이 애매하기도 하지만, 여러 다른 관점에서는 차이점이 명확하기 때문에 두 방법을 올바른 곳에 정확히 사용해야 합니다.
공통점:
- 둘 다 객체의 형태를 정의하고 타입 안정성을 위해 사용된다
- 둘 다 확장이 가능하다. 확장의 경우에는 인터페이스는
extends키워드를 사용하여 확정할 수 있고, 타입은&기호를 써서 확장할 수 있다.
차이점:
interface경우 선언적 확장을 통해 하나의 인터페이스가 생성될수 있는 반면type은 병합이 안된다. 따라서 인터페이스는 확정성과 재사용성이 높다.type은 number, string, array 와 같은 자료형에 대한 타입도 정의할 수 있지만,interface는 object 타입만 정의할 수 있다.type은 union type, intersection type으로 정의할 수 있지만,interface는 불가능하다.type은 computed value 사용이 가능하지만interface는 사용이 불가능하다
사용경우:
For the most part, you can choose based on personal preference, and TypeScript will tell you if it needs something to be the other kind of declaration. If you would like a heuristic, use
interfaceuntil you need to use features fromtype.
공식문서: https://www.typescriptlang.org/docs/handbook/intro.html
공식문서에서는 주로 취향에 따라 선택하면 된다고 한다. 하지만 판단이 안되면 interface를 사용하라 권장되고 있으며 interface에서 제공되지 않는 기능이 있을때만 type을 쓰라고 한다.
Type
- number, string, array와 같은 자료형의 타입을 정의할때 사용합니다
- 유니온 및 인터섹션 타입을 정의할때 사용합니다
Interface
- Object의 타입을 정의하는 경우 사용합니다
- 같은 이름으로 확장이 필요할때 사용합니다
