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