Typescript声明:合并类和接口

时间:2017-12-06 09:34:51

标签: typescript inheritance declaration ambient

我有两个模型Model,它的子类ClientModel是一个环境模块。现在我想从一个名为ClientModel的接口声明一组Client的属性。我该怎么做?我可以想象这样的事情:

interface Client {
    name: string;
    email: string;
}

declare class ClientModel extends Model implements Client {
    // with name and email here without redeclare them
}

1 个答案:

答案 0 :(得分:6)

您可以使用声明合并。如果类和接口在同一名称空间/模块中声明并具有相同的名称,则它们将合并为单个类类型。

interface ClientModel {
    name: string;
    email: string;
}

class ClientModel extends Model  {
    m() {
        this.email //Valid 
    }
}

如果您无法更改界面或在另一个命名空间中声明并且您无法移动它,则可以在合并界面中继承它:

interface Client {
    name: string;
    email: string;
}

interface ClientModel extends Client {}
class ClientModel extends Model  {
    m() {
        this.email //Valid 
    }
}
相关问题