티스토리 뷰

interface 타입과 객체 자체에 대한 type 별칭은 많은 점이 비슷하지만,

type 별칭보다 더 많은 것을 할 수 있기에 interface를 사용하는 것을 일반적으로 권장합니다.

 

interface는 같은 이름으로 여러 번 선언을 해도 컴파일 시점에서 합쳐지기 때문에 확장성이 좋다. 따라서 일반적으로는 interface를 사용하고 union, tuple 등이 필요한 경우에만 type 별칭을 사용하라는 TypeScript Handbook의 내용은 현재에도 유효하다.

 

-> 예를들어,

A.tsx 파일에서 

interface test {
	str1: '1'
}

B.tsx 파일에서

interface test {
	str2: '2'
}

똑같은 이름의 인터페이스를 중복으로 선언하면 프로젝트가 컴파일 될때 아래와 같이 변경된다는 말이다.

interface test {
    str1: '1',
    str2: '2'
}

이렇게 같은 이름의 인터페이스가 합쳐지는 현상을 declaration merging라고 한다. 보시다시피, type보다 interface가 좀 더 유연하다.

declaration merging 어떤 경우에 사용되는지?

가끔 타입스크립트로 작성된 라이브러리를 사용할때 타입이 너무 타이트하게 잡혀있어서 에러가 나는 경우가 있다. 이런 경우에 그 인터페이스를 declaration merging 하면 라이브러리 코드를 건드리지 않고 타입을 손쉽게 추가할 수 있다.

 

type 별칭으로 작성된 타입은 조금 더 제한적이기 때문에 private API같이 외부에 노출할 필요가 없는 경우에 사용하는 것이 좋다.

 

 

 

 

 

출처

https://joonsungum.github.io/post/2019-02-25-typescript-interface-and-type-alias/

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함