[TypeScript] implements 키워드

2023. 1. 2. 12:39TypeScript

⚡️implements 키워드

interface는 object 타입지정할 때 사용합니다.
class 타입을 확인하고 싶을 때도 interface 문법을 사용할 수 있습니다.
( 근데 implements 키워드도 필요함  )
class Car {
  model : string;
  price : number = 1000;
  constructor(a :string){
    this.model = a
  }
}
let 붕붕이 = new Car('morning'); 

1. class Car 로부터 생산되는 object들은 model과 price 속성을 가지게 됩니다.

2. 근데 class가 model, price 속성을 가지고 있는지 타입으로 확인하고 싶을 때

사용방법 -  interface + implements 키워드로 확인

interface CarType {
  model : string,
  price : number
}

class Car implements CarType {
  model : string;
  price : number = 1000;
  constructor(a :string){
    this.model = a
  }
}
let 붕붕이 = new Car('morning');

1. class 이름 우측에 implements를 쓰고 interface 이름을 쓰면

2. "이 class가 이 interface에 있는 속성을 다 들고있냐" 라고 확인이 가능합니다.

3. 속성을 다 갖고 있으면 실행이 되고 빠진 속성이 있으면 에러로 알려줍니다.

 

⚡️implements는 타입지정문법이 아닙니다

implements라는건 interface에 들어있는 속성을 가지고 있는지 확인만하라는 뜻입니다.

class에다가 타입을 할당하고 변형시키는 키워드는 아닙니다.

interface CarType {
  model : string,
  tax : (price :number) => number;
}

class Car implements CarType {
  model;   ///any 타입됨
  tax (a){   ///a 파라미터는 any 타입됨 
    return a * 0.1
  }
}

1. CarType에 있던 model : string 이런게 반영되는건 아닙니다. class 안에서의 model은 any 타입입니다.

2. class 함수도 마찬가지로 함수에 있던 number 타입이 전혀 반영되지 않습니다. 

 

( 결론 ) implements는 class의 타입을 체크하는 용도지 할당하는게 아님을 명심합시다.