(functionName) не является функцией в подклассе - PullRequest
0 голосов
/ 26 июня 2019

Я пишу расширение для сетевого текстового редактора.Из-за иерархии классов мой код дает некоторые странные результаты.

Я пытался переместить функцию проверки в базовый класс, но безрезультатно

class BaseClass{
    close(): void {
        // Does some stuff
    }
    save(): void {
        // Also does things
    }
}
class SubClass extends BaseClass{
    close(): void {
        this.validate(() => super.close()) // This works as expected
    }
    save(): void {
        this.validate(() => super.save()) // This throws the error: Uncaught TypeError: this.validate is not a function
    }
    validate(callback: () => void){
        // Does some validation, then
        if (validationOk) callback()
    }
}

Ожидаемый результатчто и функции сохранения, и закрытия в подклассе вызывают функцию проверки без ошибок.

1 Ответ

0 голосов
/ 26 июня 2019

Оказывается, события были инициализированы неправильно.

Я заменил следующее:

this.saveButton.addEventListener ('click', this.save);

With:

this.saveButton.addEventListener ('click', () => this.save ());

Единственная причина, по которой он работал до добавления функции проверки, заключается в том, чтонет ссылки на «это» в функции BaseClass.save.

...