1

我可以使用ReflectAPI轻松获取方法的参数类型:

Reflect.getMetadata('design:paramtypes', target, propertyKey);

但是,当我尝试获取函数的参数类型时,它总是返回未定义。我尝试过使用这些示例函数:

const foo = (bar: Bar) => void 0;

function foo(bar: Bar) {}
export function foo(bar: Bar) {}

而且我还读到 TypeScript 仅在您装饰类和方法时才发出元数据。那么,如何获取函数的元数据呢?

4

1 回答 1

-2

如果您正在谈论在运行时获取函数参数类型,那么在撰写本文时这是不可能的,因为 TypeScript 不支持这一点,因为在编译期间会擦除类型。换句话说,一旦 TypeScript 被编译成 JavaScript,类型信息就会被丢弃。

但是,如果您正在谈论获取函数参数的类型compile-time,那么可以使用Conditional Type。答案可以在https://stackoverflow.com/a/51851844/6587634找到

于 2020-05-07T03:53:09.343 回答