Hent parametrene på en metode fra en generisk klasse - TypeScript


Jeg har en generisk klasse med to metoder, hvoraf den ene kalder den anden. Da begge tager de samme parametre, prøver jeg at bruge Parameters Utility Type til at kopiere parametrene fra den ene til den anden. Jeg kan dog ikke finde ud af, hvordan jeg sender den generiske videre, når jeg får adgang til klassens metoder:

class Thing<T> {
    _a: T;

    constructor(a: T) {
        this._a = a;
    }

    original(anotherA: T, b: string) {
        // do something...
    }

    unOriginal(...params: Parameters<typeof Thing.prototype.original>) {
        return this.original(...params);
    }
}

Som du kan se i unOriginal-metoden, sender jeg ikke den generiske T nogen steder. Som følge heraf evalueres params til [anotherA: any, b: string]. I stedet vil jeg have, at det evalueres til [anotherA: T, b: string], men jeg kan ikke finde ud af, hvordan man sender den generiske T, når man refererer til Thing.prototype.original. For eksempel noget i stil med Parameters<typeof Thing<T>.prototype.original>.

Nogle ideer?

Svar #1

Du skal bruge Thing<T>["original"] i stedet for typeof Thing.prototype.original

class Thing<T> {
    _a: T;

    constructor(a: T) {
        this._a = a;
    }

    original(anotherA: T, b: string) {
        // do something...
    }

    unOriginal(...params: Parameters<Thing<T>["original"]>) {
        return this.original(...params);
    }
}

Relaterede artikler