我有一个新的通用界面,看起来像这样:
interface IFoo<T> {
new (scope: T);
}
当我尝试在类中实现它时,如下所示:
class BaseFoo<T> implements IFoo<T> {
constructor(scope: T) {
}
}
我收到错误: “类BaseFoo声明接口IFoo但不实现它: 类型'IFoo'需要构造签名,但类型'BaseFoo'缺少一个。“
我做错了什么?
答案 0 :(得分:1)
通常,您不会在接口上添加构造细节。如何构建对象并不构成其合同的一部分。
接口是某些行为的承诺,因此您可以使用:
interface IFoo<T> {
getById (id: number) T;
}
我现在可以提供任何构造函数的接口实现,因为它可以执行我需要的操作。
如果您需要对该项目使用公共句柄,您可能会将这些属性放在界面上:
interface IFoo<T> {
scope: T;
}
可以在TypeScript中定义接口上的构造函数的原因是接口用于编写库和外部代码的声明 - 因此能够为可以编写的东西编写接口很有用不表示为TypeScript类。