Hämta parametrarna för en metod från en generisk klass - TypeScript
Jag har en generell klass med två metoder, varav den ena anropar den andra. Eftersom båda tar samma parametrar försöker jag använda Utility Type Parameters för att duplicera parametrarna från den ena till den andra. Men jag kan inte lista ut hur jag ska vidarebefordra den generiska typen när jag får åtkomst till 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, skickar jag inte den generiska T någonstans. Som ett resultat utvärderas params till [anotherA: any, b: string]. Istället vill jag att det ska utvärderas till [anotherA: T, b: string], men jag kan inte lista ut hur man skickar den generiska T när man refererar till Thing.prototype.original. Till exempel något som Parameters<typeof Thing<T>.prototype.original>.
Några idéer?
Svar #1
Du behöver använda Thing<T>["original"] istället för 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);
}
}
