7

当函数返回类型为时Promise<number>,我如何通过反射获得它?

如果我只是这样做

Reflect.getMetadata("design:returntype", target, key)

它只是返回Promise,所以有办法知道那是数字的承诺吗?

name:"Promise"
prototype:Promise {constructor: , then: , catch: , …}
reject:function reject() { … }
resolve:function resolve() { … }
4

2 回答 2

0

看来近期不会支持这个功能了。

正如#14971(评论)中所述,反射和运行时类型序列化暂时超出了 TypeScript 项目的范围。

Mohamed Hegazy链接

于 2020-01-27T13:48:31.787 回答
-1

尝试使用自定义方法装饰器?

/* 重要笔记

  • 在装饰器中传递的所有类型都必须是类
  • 不支持接口和枚举 */

(打字稿)

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)
}
于 2021-03-17T08:47:15.247 回答