Ja, tut mir leid wegen des schrecklichen Titels für diese Frage, aber es ist schwer zu erklären. Viel einfacher, etwas Code zu zeigen und zu fragen, warum funktioniert das nicht so, wie ich es vorhabe?:Inherring generic type Parameter basierend auf einem anderen generischen Parameter in TypeScript
interface Doer<U> {
doStuff:() => U;
}
class Promiser implements Doer<Promise<string>> {
doStuff() {
return Promise.resolve('foo');
}
}
export interface Type<T> extends Function {
new (...args: any[]): T;
}
function doYourThing<T extends Doer<U>, U>(doer: Type<T>): U {
return new doer().doStuff();
}
const result = doYourThing(Promiser);
// type of "result" is `{}`
// I want it to be `Promise<string>`
Eine editierbare Version des obigen Codes can be found here.
ich nicht einmal sicher bin, ob dies möglich ist, aber ich möchte Typoskript der Lage sein, den Rückgabetyp von doYourThing()
abzuleiten basiert auf der Tatsache, dass das Argument vom Typ Doer<U>
und dem eigentlichen Argument ist vom Typ Doer<Promise<string>>
.
Ist das, was ich versuche, sogar möglich (ich bin gerade auf TypScript 2.4.2)?
Wenn ja, was mache ich hier falsch?