interface는 object 타입지정할 때 사용한다고 배웠다. 하지만 용도가 하나 더 있는데 class타입을 확인하고 싶을 때도 interface 문법도 사용할 수 있다. 근데 implements키워드도 필요하다.
class를 하나 만들었다. class Car로부터 생산되는 object들은 model과 price속성을 가지게 된다. 그런데 class가 model, price 속성을 가지고 있는지 타입으로 확인하고 싶으면 어떻게 할까?
그럴 경우 interface + implements 키워드로 확인하면 된다.
class이름 우측에 implements 를 쓰고 interface 이름을 쓰면
" 이 class가 이 interface에 있는 속성을 다 들고있냐" 라고 확인이 가능하다.
그래서 다 가지고 있으면 에러가 발생하지 않고 혹여 빠진 속성이 있으면 에러로 알려준다.
implements는 타입지정문법이 아니다.
implements 라는건 interface에 들어있는 속성을 가지고 있는지 확인만 하라는 뜻이다.
class에다가 필드와 타입을 할당하고 변형시키고 그런 역할은 아니라는 이야기다.
carType을 implements 했냐고 써봤다.
근데 carType에 있던 model:string 이런게 반영되는건 아니다. class 안에서의 model은 any타입이다. class함수도 마찬가지로 함수에 있던 number 타입이 전혀 반영되지 않는다.