코딩애플 Typescript - implements 키워드

김원종·2024년 5월 27일
0

TypeScript 학습

목록 보기
25/28

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 타입이 전혀 반영되지 않는다.

그럼 결론적으로 implements는 어디에 사용하나?

  • class가 특정 필드와 함수를 가지고 있는지 확인하고 싶은 경우 간혹 사용한다.
    예를 들어 클래스끼리 복잡하게 상솓하고 그런 경우엔 이 클래스에 어떤 필드와 함수가 들어있는지 추론하기 힘든 경우가 많다. 그래서 이 class가 특정 필드와 함수같은걸 가지고 있는지 확인하고 체크하고 싶을때 class~~ implements ~~{} 를 쓰면 된다.
    클래스를 많이 만들어쓸 때 일종의 가이드북 같은 역할을 해주기도 합니다.

extends는 뭘까?

  • class A extends B {} 쓰면 B에 있던 필드와 함수를 A로 복사해준다. 그래서 extends는 클래스끼리 복사할 때 (상속을 구현할 때 ) 사용한다.
    implements는 상속 그런게 되는것도 아니고 그냥 체크만 해주는 문법이라 가볍게 타입체크만 할수가 있다.
profile
개린이

0개의 댓글