Typescript 声明:合并一个 class 和一个接口
Typescript declaration: Merge a class and an interface
我有两个模型 Model
及其子类 ClientModel
一个环境模块。现在我想从所谓的 Client
接口声明一组 ClientModel
的属性。我该怎么做?我可以想象这样的事情:
interface Client {
name: string;
email: string;
}
declare class ClientModel extends Model implements Client {
// with name and email here without redeclare them
}
您可以使用声明合并。如果 class 和接口在同一个 namespace/module 中声明并且具有相同的名称,它们将合并为一个 class 类型。
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
}
}
我有两个模型 Model
及其子类 ClientModel
一个环境模块。现在我想从所谓的 Client
接口声明一组 ClientModel
的属性。我该怎么做?我可以想象这样的事情:
interface Client {
name: string;
email: string;
}
declare class ClientModel extends Model implements Client {
// with name and email here without redeclare them
}
您可以使用声明合并。如果 class 和接口在同一个 namespace/module 中声明并且具有相同的名称,它们将合并为一个 class 类型。
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
}
}