몽땅뚝딱 개발자

[TypeScript] interface와 type의 차이 본문

Development/Typescript

[TypeScript] interface와 type의 차이

레오나르도 다빈츠 2022. 11. 14. 23:19

 

인터페이스(interface)

인터페이스의 특징으로는 보강을 할 수 있다는 것인데, 이를 선언 병합(declaration merging)이라고 한다.

선언 병합은 반드시 인터페이스를 사용해야 한다.

interface IState {
    name: string;
    capital: string;
}

interface IState {
    population: number;
}

const text: IState {
    name: 'test',
    capital: 'TEST',
    population: 50000
}

 

 

 타입(type)

인터페이스는 타입을 implements로 확장할 수 있지만 유니온 같은 복잡한 타입은 확장 할 수 없다.
타입은 유니온이 가능하다.

type AorB = 'a' | 'b'

 

 

 

💡 타입과 인터페이스를 선택할 때 고려해야 할 것

복잡한 타입이라면 고민할 것도 없이 타입 별칭을 사용한다.
그러나 타입과 인터페이스 두가지 방법으로 표현할 수 있는 간단한 객체 타입이라면 일관성과 보강의 관점에서 고려해야 한다.

1. 프로젝트에서 일관되게 인터페이스를 사용하거나 일관되게 타입을 사용중이라면 각 타입을 유지하면 된다.
2. 아직 스타일이 확립되지 않은 프로젝트라면, 향후 보강의 가능성이 있는지 고려하여 둘 중에 하나를 선택해야 한다.

 

 


 

 

출처

댄 밴터캄, 이펙티브 타입스크립트 (프로그래밍 인사이트, 2021)

 

 

 


개인적으로 공부한 내용을 정리하는 블로그로
잘못된 개념을 게시하지않도록 주의하고 있으나 오류가 있을 수 있습니다.

 

 

Comments