TypeScript - как предотвратить перезапись методов класса переменными в конструкторе - PullRequest
0 голосов
/ 24 июня 2019

У меня большая база кода, где некоторые члены класса задаются дважды - один раз как метод, а другой явно в конструкторе.

Вот пример того, как это может выглядеть:

class SuperHero {
    public name: string;

    constructor(name: string) {
        this.name = name;

        // This line is a problem.
        this.hasCape = () => {
            return this.name === 'Batman';
        };
    }

    // I want this to be the canonical implementation.
    public hasCape() {
        return this.name === 'Batman' || this.name === 'Wonder Woman';
    }
}

Похоже, public readonly hasCape() неверный синтаксис.

Есть ли способ применить объявление метода как каноническое на уровне компилятора или линтера?

1 Ответ

1 голос
/ 25 июня 2019

Вдохновленный комментарием от Аарон Белл .Это делает hasCape свойством, это функция, которая доступна только для чтения.Затем компилятор машинописного текста выдает ошибку при назначении его из конструктора.

    public get hasCape() {
        return () => this.name === 'Batman' || this.name === 'Wonder Woman';
    }
...