尽管有接口,如何使属性私有?

时间:2019-02-07 14:13:56

标签: typescript oop

我已经声明了接口:

interface IMenu {
    name: string;
    url: string;
}

实现这种接口的类:

class Menu implements IMenu {
    public name;
    public url;
}

例如,接口中的属性始终是公共的,这意味着实现该接口的类必须包含公共属性。是否可以将它们设置为受保护或私有?

2 个答案:

答案 0 :(得分:1)

没有办法做到这一点。接口的实现必须是公共的(某些语言允许一些隐藏,例如带有显式接口实现的C#,但仍然可以从类外部访问实现的属性)。

答案 1 :(得分:1)

interface IMenu {
    name: string;
    url: string;
}

class Menu implements IMenu {
    private _name: string;
    private _url: string;

    constructor() {
        _name = "name";
        _url = "url";
    }

    get name(){
        // your implementation to expose name
    }

    set name(value){
        // your implementation to set name         
    }
 }

您可以在类的“接口私有” /“受保护”中为公共变量定义Getter和Setter。