Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 如何使属性成为私有接口?_Typescript_Oop - Fatal编程技术网

Typescript 如何使属性成为私有接口?

Typescript 如何使属性成为私有接口?,typescript,oop,Typescript,Oop,我已声明接口: interface IMenu { name: string; url: string; } 以及实现此交互的类: class Menu implements IMenu { public name; public url; } 例如,接口中的属性总是公共的,这意味着实现此接口的类必须包含公共属性。是否可以将它们设置为受保护的或私有的?无法做到这一点。接口实现必须是公共的(有些语言允许一些隐藏,比如带有显式接口实现的C#,但实现的属性仍然可以从

我已声明接口:

interface IMenu {
    name: string;
    url: string;
}
以及实现此交互的类:

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

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

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

您可以从类的Private/Protected接口为make Public变量定义Getter和Setter。

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