Interface typescript调用能否实现接口并使变量私有?

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

这就是我要做的。我们在类的结构中接收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;
    }
}
然后上课如下:

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;}