[TS] implement vs extends

김다빈·2023년 9월 4일
0

타입스크립트

목록 보기
12/13
post-thumbnail

📌 extends

부모 클래스인 Car의 속성이나 메소드를 가져다 쓸 수 있음 (상속의 개념)

class Car {
  mileage = 0;
  price = 100;
  color = 'white';

  drive() {
    return 'drive';
  }

  brake() {
    return 'brake';
  }
}

class Ford extends Car {};

const myFordCar = new Ford();

📌 implements

  • 새로운 클래스의 타입 체크를 위해 사용
  • 그 클래스의 "모양"을 정의할 때 사용
  • 상속처럼 부모의 속성과 메소드를 받아 사용하는 것이 아니라 implement한 클래스의 속성과 메소드를 (필수로) 모두 갖고 있어야 함.
class Car {
  mileage = 0;
  price = 100;
  color = 'white';

  drive() {
    return 'drive';
  }

  brake() {
    return 'brake';
  }
}

class Ford implements Car {
  mileage = 1;
  price = 20;
  color = 'black';

  drive() {
    return 'drive';
  }

  brake() {
    return 'brake';
  }
}

만약 Ford 클래스가 Car 클래스와 같은 속성, 메소드를 모두 갖고 있지 않으면 타입 에러 발생!

2개의 다른 클래스 또는 타입으로부터 implement하면?

interface Part {
  seats: number;
  wheels: number;
}

class Ford implements Car, Part {
  mileage = 1;
  price = 20;
  color = 'black';
  seats = 4;
  wheels = 4;

  drive() {
    return 'drive';
  }

  brake() {
    return 'brake';
  }
}

그냥 implement한 클래스 또는 타입의 모든 속성 및 메소드를 추가해주면 됨.

profile
Hello, World

0개의 댓글

관련 채용 정보