Typescript - принять ключ дочернего класса на функцию в базовом классе - PullRequest
1 голос
/ 05 апреля 2020

У меня есть функция в базовом классе, которая берет имя свойства для просмотра:

class Parent {
    listenTo(prop: keyof this);
}

У меня есть дочерний класс, который я хочу просмотреть одно из его собственных свойств

class Child extends Parent {
    foo = 3;
    constructor() {
        this.listenTo('foo');
    }
}

Но это не работает. Он жалуется, что 'foo' не является одним из допустимых ключей, а затем перечисляет только ключи от Parent, а не child. Можно ли получить объявление функции в Parent для просмотра фактического типа, а не только самого себя?

1 Ответ

1 голос
/ 05 апреля 2020

Тестирование сейчас на детской площадке, кажется, работает, но вам понадобится вызов super:

class Parent {
    listenTo(prop: keyof this) {}
}

class Child extends Parent {
    foo = 3;
    constructor() {
        super();
        this.listenTo('foo'); // ok
        this.listenTo('foo2'); // error
    }
}

TypeScript Playground

Убедитесь, что версия для машинописи обновлено

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