这就是我想要做的。我们在类的结构中接收JSON数据。所以我们可以按如下方式声明一个接口:
export interface IElement {
id : number;
name : string;
}
然后课程如下:
export class Element implements IElement {
id : number;
name : string;
constructor (src : IElement) {
this.id = src.id;
this.name = src.name;
}
}
然后我们将JSON数据转换为< IElement>并将其传递给类构造函数。然后可以将构造函数传递给IElement或Element,生活也很好。
但是......我想强制访问使用getter和setter。所以我想做的是:
export class Element implements IElement {
private id : number;
private name : string;
constructor (src : IElement) {
this.id = src.id;
this.name = src.name;
}
getId () : number {
return this.id;
}
getName () : string{
return this.name;
}
}
以上对我来说仍然可以正常工作,因为在构造函数中我可以访问这些变量。但是,如果将它们设置为private,则Element不再实现IElement,因为它不符合IElement中的合同。
有办法做到这一点吗?如果必须,Element不必实现IElement,但如果确实如此,它会使生活更清洁。
答案 0 :(得分:1)
您的公共表面区域可以替代接口,或者不是。该类不能替代IElement
(如果你想强迫人们使用getter,它不应该),因此它不能implement
接口。
既然你没有说出为什么你想要人们使用getter,我不知道这是否合适,但你可以在类中使用属性getter:
export interface IElement {
id: number;
name: string;
}
export class Element implements IElement {
private _id: number;
private _name: string;
constructor (src: IElement) {
this._id = src.id;
this._name = src.name;
}
get id() {
return this._id;
}
get name() {
return this._name;
}
}