Qua*_* Le 3 inheritance declaration ambient typescript
我有两个模型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
}
Run Code Online (Sandbox Code Playgroud)
您可以使用声明合并。如果类和接口在相同的名称空间/模块中声明并且具有相同的名称,则它们将合并为单个类类型。
interface ClientModel {
name: string;
email: string;
}
class ClientModel extends Model {
m() {
this.email //Valid
}
}
Run Code Online (Sandbox Code Playgroud)
如果您无法更改接口或在另一个命名空间中声明了该接口,并且无法移动它,则可以在合并的接口中从该接口继承:
interface Client {
name: string;
email: string;
}
interface ClientModel extends Client {}
class ClientModel extends Model {
m() {
this.email //Valid
}
}
Run Code Online (Sandbox Code Playgroud)