【问题标题】:Error "Type IFoo<T> requires a construct signature but type Foo<T> lacks one" when implementing a newable generic interface in TypeScript在 TypeScript 中实现新的泛型接口时出现错误“类型 IFoo<T> 需要构造签名,但类型 Foo<T> 缺少构造签名”
【发布时间】:2013-11-06 02:30:03
【问题描述】:

我有一个新的通用接口,看起来像这样:

interface IFoo<T> {
    new (scope: T);
}

当我尝试在一个类中实现它时,像这样:

class BaseFoo<T> implements IFoo<T> {
    constructor(scope: T) {

    }
}

我收到一个错误: “类 BaseFoo 声明了接口 IFoo 但没有实现它: 'IFoo' 类型需要构造签名,但 'BaseFoo' 类型缺少构造签名。”

我做错了什么?

【问题讨论】:

标签: typescript


【解决方案1】:

通常,您不会将构造细节放在界面上。对象的构造方式和构造方式不是其契约的一部分。

接口是某些行为的承诺,所以你可以使用:

interface IFoo<T> {
    getById (id: number) T;
}

我现在可以提供接口的任何实现,无论构造函数如何,因为它可以执行我需要的操作。

如果您需要项目的公共句柄,您可以将属性放在接口上:

interface IFoo<T> {
    scope: T;
}

您可以在 TypeScript 中的接口上定义构造函数的原因是接口用于为库和外部代码编写声明 - 因此能够为您可以编写的事物编写接口很有用'不表示为 TypeScript 类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2018-09-14
    • 2017-12-16
    • 1970-01-01
    相关资源
    最近更新 更多