더북(TheBook)

addMoneyuseMoney 같은 메서드에서 this를 쓰고 싶은 상황입니다. 다만 이 예제에서 thisobj 객체가 아니라 datamethods 객체를 합친 타입입니다. 즉, this.data.money로 접근하는 것이 아니라 this.money로 바로 접근할 수 있게 하고 싶습니다. 메서드들도 this.methods.addMoney가 아니라 this.addMoney로 접근하려 합니다.

앞의 예제에 타입을 추가해보겠습니다.

type Data = { money: number };
type Methods = {
  addMoney(this: Data & Methods, amount: number): void;
  useMoney(this: Data & Methods, amount: number): void;
};
type Obj = {
  data: Data;
  methods: Methods;
};
const obj: Obj = {
  data: {
    money: 0,
  },
  methods: {
    addMoney(amount) {
      this.money += amount;
    },
    useMoney(amount) {
      this.money -= amount;
    }
  }
};
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.