Jiajun
Jiajun

Reputation: 155

In Typescript, how to access members outside a "anonymous" class

I created a "anaonymous" class based on this: Typescript anonymous class

But I don't know how to access the outer scope members. Here is an example code:

class BaseCounter {
  counter = 1;

  count() {
    console.log(++this.counter);
  }

  getDoubleCounter() {
    return new class DoubleCounter extends BaseCounter {
        count() {
            // In Java, we can access the outer scope counter by ClassName.this like this
            // BaseCounter.this.counter += 2
            // console.log(BaseCounter.this.counter); 
        }
    }();

}

Upvotes: 5

Views: 791

Answers (1)

Jiajun
Jiajun

Reputation: 155

Actually I can assign parent this to an variable like this

class BaseCounter {
  counter = 1;

  count() {
    console.log(++this.counter);
  }

  getDoubleCounter() {
    const parentThis = this;
    return new class DoubleCounter extends BaseCounter {
        count() {
            parentThis.counter += 2
            console.log(parentThis.counter); 
        }
    }();

}

Upvotes: 5

Related Questions