以下代码段在打字稿中意味着什么?

时间:2019-12-06 06:17:49

标签: typescript typescript-decorator

我在反射元数据库的声明文件中看到以下代码段。这是否意味着函数元数据应返回具有2个函数的对象?请帮助解释此用法,并分享使用方法示例。谢谢。

function metadata(metadataKey: any, metadataValue: any): {
            (target: Function): void;
            (target: Object, propertyKey: string | symbol): void;
};

1 个答案:

答案 0 :(得分:0)

声明该函数返回两个函数签名-这是由于函数重载造成的。

当您使用两个参数调用metadata时,将能够调用返回的2种方式之一:

通过(target: Function)

x.metadata(1, 1)(function() {});

(target: Object, propertyKey: string | symbol)

x.metadata(1, 1)({}, '')

这两个函数签名使您可以使用一些不同的参数来调用单个实现。