typescript - Få returtyp med reflect-metadata, när returtypen är Promise av något
När funktions returtyp är Promise<number>, hur kan jag få den med reflektion?
Om jag bara gör
Reflect.getMetadata("design:returntype", target, key)
det returnerar bara Promise, så finns det ett sätt att veta att det är en Promise av nummer?
name:"Promise"
prototype:Promise {constructor: , then: , catch: , …}
reject:function reject() { … }
resolve:function resolve() { … }
Svar #1
Det verkar som att den här funktionen inte kommer att stödjas inom den närmaste framtiden.
Som noterats i #14971 (kommentar), ligger reflektion och körningstidstyp-serialisering utanför TypeScript-projektets omfattning för tillfället.
— Mohamed Hegazy (länk)
Svar #2
Försök att använda Anpassad Metoddekorerare?
Viktiga anteckningar
- alla typer som skickas in i dekoratorn måste vara klass
- interface och enum stöds inte
(TypeScript)
export function ReturnType(type: any): MethodDecorator {
return (target, propertyKey) => {
Reflect.defineMetaData('YOUR_CUSTOM_KEY', type, target, propertyKey);
}
}
// Somewhere in your code
@ReturnType(Number)
async function myFunc():Promise<number> {
return await Promise.resolve(1234)
}
