最近,我一直在思考为什么Typescript文档的作者选择了以下示例作为类装饰器:
function reportableClassDecorator<T extends { new (...args: any[]): {} }>(constructor: T) {
return class extends constructor {
reportingURL = "http://www...";
};
}
我对这一点特别感兴趣:new (...args: any[]): {}
为什么构造函数签名的返回类型是{}
?对我来说,unknown
或object
似乎是更好的选择,感觉更具描述性。
我知道把{}
作为函数的返回类型意味着它可以返回几乎任何东西。但是,我不明白为什么文档建议这样使用它。
有人能帮我发现我在这里缺了什么吗?
谢谢!
任何不是null
或undefined
的内容都可以分配给空类型{}
,因此它对于构造函数的返回类型来说可能有点太宽。也许object
是最准确地表示构造函数返回值的泛型类型。