typescript - Er det mulig å gjenbruke typeparameteren til generics til en klasse
For eksempel har jeg følgende kode
class Foo {
bar: Promise<string[]>;
// a is the same type as type of promise in bar
baz(a: ????): Foo['bar'] {
// some code
return Promise.resolve(a);
}
}
Jeg kan få typen på bar - men jeg vil gjerne få typen inne i en promise uten å lage ekstra type eller grensesnitt.
Jeg har søkt mye, og jeg tror dette ikke er implementert eller foreslått ennå, men før jeg oppretter en forespørsel om funksjon vil jeg være sikker.
Svar #1
Du kan gjøre det, men du vil trenge en betinget type for å hente typeparameteren fra den generiske klassen via infer:
type UnboxPromise<T extends Promise<any>> = T extends Promise<infer U> ? U : never;
class Foo {
bar: Promise<string[]>;
// a is the same type as type of promise in bar
baz(a: UnboxPromise<Foo['bar']>): Foo['bar'] {
// some code
return Promise.resolve(a);
}
}
Lekeromlenke
