Hent parameterne til en metode fra en generisk klasse - TypeScript


Jeg har en generell klasse med to metoder, hvorav den ene kaller den andre. Siden begge tar de samme parameterne, prøver jeg å bruke Parameters-verktøystypen for å duplisere parameterne fra den ene til den andre. Imidlertid klarer jeg ikke å finne ut hvordan jeg skal videreføre generikken når jeg får tilgang 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 noe sted. Som et resultat evalueres params til [anotherA: any, b: string]. I stedet vil jeg at det skal evalueres til [anotherA: T, b: string], men jeg klarer ikke å finne ut hvordan jeg sender den generiske T når jeg refererer til Thing.prototype.original. For eksempel noe som Parameters<typeof Thing<T>.prototype.original>.

Noen ideer?

Svar #1

Du må bruke 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);
    }
}

Relaterte artikler