TIR: Typescript | 클래스와 인터페이스 (4) this

Lumpen·2023년 1월 18일
0

Typescript

목록 보기
6/17

this 를 반환 타입으로 사용

this 는 값 뿐만 아니라 타입으로도 사용할 수 있다
메소드의 반환 타입을 지정할 때 this 타입을 유용하게 사용 가능하다

set 자료구조로 두 가지 연산을 하는 예제

let set = new Set
set.add(1).add(2).add(3)
set.has(2) // true
set.has(4) // false

class Set {
  has (value: number): boolean {
    //
  }
  add (value: number): Set {
    //
  }
}

지금 까지는 평범하다
Set을 상속받는 서브크랠스를 만들어보면 이야기가 다르다

class MutableSet extends Set {
  delete (value: number): boolean {
    //
  }
  add (value: number): MutableSet {
    //
  }
}

add() 함수의 경우 Set을 반환하기 때문에 MutableSet 을 반환하도록 오버라이드 한다

이처럼 클래스를 상속받는 서브 클래스는 this를 반환하는 모든 시그니처를 오버라이드해야 한다
이렇게 같은 기능도 오버라이드 해야한다면 상속을 받는 것이 큰 의미가 없을 것 같다

class Set {
  has(value: number): boolean {
    //
  }
  add (value: number): this {
    //
  }
}

이처럼 반환 타입을 this 로 지정하면 이와 같은 문제를
해결할 수 있다

Set의 this 는 Set 인스턴스를, MutableSet의 this 는 MutableSet 을 자동으로 가리키므로 MutableSet 에서 오버라이드할 필요가 없다

profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글