Как сделать свойства приватными, несмотря на интерфейс? - PullRequest
0 голосов
/ 07 февраля 2019

Я объявил интерфейс:

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

И класс, который реализует этот интерфейс:

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

Такие свойства в интерфейсе всегда общедоступны, это означает, что класс, реализующий этот интерфейс, долженсодержат публичные свойства.Можно ли сделать их защищенными или приватными?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019
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 для переменной make Public из интерфейса Private / Protected для класса.

0 голосов
/ 07 февраля 2019

Нет способа сделать это.Реализации интерфейса должны быть общедоступными (некоторые языки допускают некоторую скрытность, например C # с явными реализациями интерфейса, но реализованные свойства по-прежнему доступны извне класса).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...