我一直在使用 TypeScript 中带有构造签名的接口,当以下类型检查失败时,我变得有点困惑:
class Foo {
constructor () {
}
}
interface Bar {
new(): Bar;
}
function Baz(C : Bar) {
return new C()
}
var o = Baz(Foo);
类型错误是:
提供的参数与调用目标的任何签名都不匹配:“new() => Foo”和“Bar”类型的构造签名不兼容:“Bar”类型需要构造签名,但“Foo”类型缺少构造签名(C:Bar ) => 酒吧
Foo 的构造函数的类型是 () => Foo,这就是我认为 Bar 所说的。我在这里错过了什么吗?