[TypeScript] extends / super

hello__0·2022년 8월 6일
0

extends

상속 / 확장

파생 class

기본 class가 확장이 되어서 파생 class가 되는 것

// 기본
class chicken {
  result() {
    return 'Fried';
  }
}
//    파생              기본
class seasoned extends chicken {
  result() {
    return 'Seasoned';
  }
}
//              파생
const kfc = new seasoned();

console.log(kfc.result());

class seasoned extends chicken
= class 파생 extends 기본

부모로 부터 자식이 상속 받아 사용이 가능하다.(상속)
또한 기본 클래스를 기준으로 자식 클래스가 확장 될 수 있다.


super

  • 기본 클래스 호출시 사용된다.
  • 생성자에서 this 사용 전에 호출되어야 한다.
// 기본 클래스 
class Actor {
  name: string

  constructor(name: string) {
    this.name = name;
  }
  actorName() {
    return `배우의 이름은 ${this.name}`;
  }
}
// 파생 클래스
class Person extends Actor {
  constructor(name: string) {
    super(name);
  }
  personName() {
    return `${super.actorName()} 사람의 이름은 ${this.name}`;
   
  }
}
const person = new Person('Jongseok');

console.log(person.personName());

매개변수가 적용되는 순서

  1. 매개변수로 Jongseok을 넣는다.

    const person = new Person('Jongseok');

  2. 파생 class의 생성자 함수로 Jongseok이 들어간다.

    class Person extends Actor {
    constructor(name: string) {
    super(name);
    }

  3. 생성자 함수에서 상위의 기본클래스인 name으로 들어간다.

    super(name);

  4. 기본 클래스의 name으로 들어간다.

    class Actor {
    name: string
    constructor(name: string) {
    this.name = name;
    }

  5. 기본 클래스의 멤버로 세팅된다.

    this.name = name;

this는 person이라는 디스턴스를 가르키기 때문에 생성된 person이라는 인스턴스에서 재활용이 가능하다.

파생된 class에서 super로 접근을 할 경우에는 상위 class를 참조한다.
super => Actor 참조
사람의 이름은 ${this.name} => const person 참조

profile
자라나라 나무나무

0개의 댓글