Как сделать унаследованный метод приватным в расширенном классе - PullRequest
0 голосов
/ 04 июля 2019

Я хочу сделать унаследованный метод приватным за пределами расширенного класса в Typescript

Допустим, у меня есть два класса, как это:

class BaseClass{
    constructor(){}

    sayHello(){
        console.log('hello');
    }
}

class Class extends BaseClass{
    constructor(){
        super();
    }

    private sayHello(){  //I don't want to have to do this every time
        super.sayHello(); 
    }
}

let obj = new Class();
obj.sayHello();

Мне нужен доступ к методу sayHello() внутри класса, но он не должен быть доступен извне. Я не хочу перезаписывать его каждый раз, когда наследую.

Ответы [ 2 ]

1 голос
/ 04 июля 2019

Ключевое слово protected делает метод доступным только для расширенных классов, но не для внешних.

class BaseClass {
    constructor() { }

    protected sayHello() {
        console.log('hello');
    }
}

class Class extends BaseClass {
    constructor() {
        super();
    }

    protected sayHello() {
        super.sayHello(); 
    }
}
1 голос
/ 04 июля 2019

Я думаю, вы ищете модификатор доступа protected. Защищенный член доступен из производных классов, но не снаружи класса

class BaseClass{
    constructor(){}

    protected sayHello(){
        console.log('hello');
    }
}

class Class extends BaseClass{
    constructor(){
        super()
        this.sayHello() // ok
    }
}

let obj = new Class();
obj.sayHello(); //err
...