Interface typescript调用能否实现接口并使变量私有?
这就是我要做的。我们在类的结构中接收JSON数据。因此,我们可以声明一个接口,如下所示:Interface typescript调用能否实现接口并使变量私有?,interface,typescript,Interface,Typescript,这就是我要做的。我们在类的结构中接收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
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;
}
}
然后上课如下:
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数据强制转换为,并将其传递给类构造函数。然后可以向构造函数传递一个IEElement或一个元素,这样生命就好了
然而。。。我想强制访问使用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,那么元素将不再实现IElement,因为它不履行IElement中的契约
有办法做到这一点吗?如果必须的话,Element不必实现IEElement,但如果实现了它,生活会变得更干净。您的公共表面区域可以替代接口,或者不是。该类不能替代
IElement
(如果您想强制人们使用getter,则不应使用它!),因此它不能实现接口
由于您没有说明为什么希望人们使用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;
}
}
谢谢,是的,这正是我需要的。这是唯一的解决办法吗。我发现如果我不注入src:IElement
,它会给出一个错误。有没有一种方法可以执行这样的操作>导出接口IELENT{private id:number;private name:string;}