为什么Typescript文档建议以以下方式声明类装饰器



最近,我一直在思考为什么Typescript文档的作者选择了以下示例作为类装饰器:

function reportableClassDecorator<T extends { new (...args: any[]): {} }>(constructor: T) {
return class extends constructor {
reportingURL = "http://www...";
};
}

我对这一点特别感兴趣:new (...args: any[]): {}

为什么构造函数签名的返回类型是{}?对我来说,unknownobject似乎是更好的选择,感觉更具描述性。

我知道把{}作为函数的返回类型意味着它可以返回几乎任何东西。但是,我不明白为什么文档建议这样使用它。

有人能帮我发现我在这里缺了什么吗?

谢谢!

任何不是nullundefined的内容都可以分配给空类型{},因此它对于构造函数的返回类型来说可能有点太宽。也许object是最准确地表示构造函数返回值的泛型类型。

最新更新