[TypeScript] Property ~ does not exist on type ~

문제

다음과 같은 코드가 있을 때, Property 'scream' does not exist on type 'Animal' 에러가 뜸.

abstract class Animal {
  public instruct(): void {
    console.log("전방 함성!");  
    this.scream(); // 추상 메소드 사용
    console.log("잘했다!");
  }
}

class Cat extends Animal {
  scream(): void {
    console.log('야옹!');
  }
}
class Duck extends Animal {
  scream(): void {
    console.log('꽥!');
  }
}

const cat = new Cat();
cat.scream();

const duck = new Duck();
duck.scream();

해결

자식 클래스에는 있는데 왜 부모 클래스엔 없다는거지? 당연히 선언을 안해서이다. public 함수로 또 감싸져있어서 방법이 다른줄 알았지만 추상 메소드를 부모 클래스 내부에서 abstract로 선언하는 것은 똑같다.

abstract class Animal {
  public instruct(): void {
    console.log("전방 함성!");  
    this.scream();
    console.log("잘했다!");
  }
  abstract scream(): void; // 빠트린 부분
}

class Cat extends Animal {
  scream(): void {
    console.log('야옹!');
  }
}
class Duck extends Animal {
  scream(): void {
    console.log('꽥!');
  }
}

const cat = new Cat();
cat.scream();

const duck = new Duck();
duck.scream();

Categories:

Updated:

Leave a comment