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.
