typescript

타입스크립트의 interface란.

jdy8739 2022. 1. 18. 13:01

1)

타스의 interface는 객체 자료형에 타입을 지정해 줄 수 있는 type이다.

 

type alias와 비슷하게 타입을 지정해주는 역할을 하며, 

 

관행적으로 첫 알파벳을 대문자로 사용한다. 

 

일반 type과 다른 점은,

 

interface는 객체 자료형에만 타입을 지정할 수 있으며,

 

interface 이름 = {  } 이런 구조를 취하지않는다.

 

즉, = 가 없다.

 

보는 바와 같이 타입 지정 대상이

 

객체 자료형이 아니면 사용이 불가능하다.

 

 

반면, type은

이런 형식이 가능하다.

 

 

 

2)

interface의 장점을 알아보자.

우선 extends 문법이 가능하다.

 

extends를 해서 상속을 하여, 타입을 합칠 수 있다.

 

이제 Teacher 이라는 interface는 name과 age를 모두 가진 interface이다.

 

반면, type은 상속을 할 수 없고

 

이런식으로 하는데, 주의해야할점은

 

extends는 상속을 받아 속성을 합치는 기능을하지만

 

&는 두 타입 모두 다 만족하게 요구하는 기능을한다.

 

참고로 interface역시 &(intersection)이 가능하다.

 

 

 

3)

interface의 또 다른 장점은 같은 이름으로 중복 선언이 가능하다는것이다.

 

그럼 새로운 interface가 전에 생성된 동일한 이름의 interface를 extends한것처럼

 

합쳐진다.

 

반면, type은 같은 식별자 이름으로 중복 선언이 불가능하다.

 

 

 

4)

interface는 extends로 상속이나 intersection을 사용해 타입을 합쳐줄 때,

 

속성의 이름이 겹친다면 에러가난다.

 

다만 속성의 이름이 같을지라도,

 

타입이 같다면 에러가나지않는다.

 

intersection의 경우 역시

 

name 속성이 string과 number라는 타입을 동시에 가질 수 없기때문에

 

에러가 난다.

 

역시 두 속성의 타입이 같다면 문제되지않는다.