typescript - Hvordan legge til typer for "this"-nøkkelordet i mocha-tester?


Jeg initialiserer noe asynkront data i mine mocha-tester ved å bruke funksjonaliteten for forsinket rot-suite.

I mitt øverste beforeEach oppretter jeg noen objekter med spesifikke typer og lagrer dem i this-objektet. I de underordnede testfilene i it-suiteene bruker jeg this for å unngå å duplisere koden utallige ganger, men jeg mister typene ved å gjøre det:

it("should do something", async function() {
  await this.token.approve(account, amount);
});

For å få dem tilbake (spesielt autofullføringsfunksjonaliteten), må jeg legge til en ekstra kodelinje:

const token: Erc20 = this.token;
await token.approve(account, amount);

Jeg vet at jeg kunne gjort dette inline ved å caste med parenteser, men jeg foretrekker å ikke gjøre det.

Finnes det noen måte å definere typene for "this"-eieren av alle test suite-funksjoner?

Svar #1

Du kan utvide Mochas Context-grensesnitt og erklære dine ekstra test-kontekstegenskaper.

interface MyContext extends Mocha.Context {
  token: Erc20;
}

I testfunksjonene dine kan du legge til typeinformasjon for this-parameteren som følger:

it('should do something', async function(this: MyContext) {
  await this.token.approve();
});

OPPDATERING

Koden ovenfor kompilerer ikke i strict-modus (error TS2769: No overload matches this call.). Se https://stackoverflow.com/a/62283449/69868 for en alternativ løsning.

Relaterte artikler