【发布时间】:2017-04-25 14:23:23
【问题描述】:
我想定义一个可调用函数foo()(不是类!我不想在这里使用new 运算符),它还有一个属性foo.bar()。在普通的 JS 中,它看起来像这样:
function foo() {
// ...
}
foo.prototype.bar = function bar() {
// ...
}
我在 TypeScript 中使用类似这样的界面进行了尝试:
interface IFoo {
(): any;
bar(): any;
}
const foo: IFoo = function(): any {
// ...
};
foo.prototype.bar = function bar(): any {
// ...
};
但我得到一个错误:
error TS2322: Type '() => any' is not assignable to type 'IFoo'.
似乎 TS 抱怨定义 foo 和它的属性 bar 之间的中间状态,因为 foo 还没有属性 bar 它不能分配给 const 类型的 @ 987654333@。
我该如何解决这个问题?
换个方式问:我怎样才能为IFoo提供一个实现?
【问题讨论】:
-
有使用接口的理由吗?如果您以后需要该接口,您可以随时使用
typeof foo。 -
@SebastianSebald 我不在乎它应该是一个接口或任何其他类型定义。但我确实需要该类型的名称,以便我可以拥有该类型的变量。我的示例中的接口准确地描述了我想要做什么,我只是不知道如何为其提供实现
标签: javascript typescript interface