我在反射元数据库的声明文件中看到以下代码段。这是否意味着函数元数据应返回具有2个函数的对象?请帮助解释此用法,并分享使用方法示例。谢谢。
function metadata(metadataKey: any, metadataValue: any): {
(target: Function): void;
(target: Object, propertyKey: string | symbol): void;
};
答案 0 :(得分:0)
声明该函数返回两个函数签名-这是由于函数重载造成的。
当您使用两个参数调用metadata
时,将能够调用返回的2种方式之一:
通过(target: Function)
x.metadata(1, 1)(function() {});
或(target: Object, propertyKey: string | symbol)
x.metadata(1, 1)({}, '')
这两个函数签名使您可以使用一些不同的参数来调用单个实现。