더북(TheBook)

메서드에 this를 직접 타이핑함으로써 에러를 해결했습니다. 다만 앞으로 추가할 모든 메서드에 this를 일일이 타이핑해야 하므로(this : Data & Methods) 중복이 발생합니다. 이럴 때 ThisType 타입을 사용하면 중복을 제거할 수 있습니다.

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