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;
        }
      }
    };
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.