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

Мне нужно реализовать некоторое количество интерфейсов (например, IUserAccess).

Все эти интерфейсы наследуют интерфейс IBase, который содержит метод Execute, поэтому я хочу реализовать IBase только один раз.

Вот так:

class IBase{
  Execute(data: any): void{
    console.log('Execute');
  };

interface IUserAccess extends IBase {
  CheckPassword(username: string, password: string): boolean;
}

class UserAccess implements IUserAccess{
  CheckPassword(username: string, password: string): boolean {
    console.log('CheckPassword');
    Execute({...});
    ...
  }

}

Но IDE говорит:

Class 'UserAccess' incorrectly implements interface 'IUserAccess'.
  Property 'Execute' is missing in type 'UserAccess' but required in type 'IUserAccess'.

Как мне решить мою проблему?

1 Ответ

2 голосов
/ 09 апреля 2019

Возможное решение

class IBase{
  Execute(data: any): void{
    console.log('Execute');
  };
}

interface IUserAccess {
  CheckPassword(username: string, password: string): boolean;
}

class UserAccess extends IBase implements IUserAccess {
  CheckPassword(username: string, password: string) {
    console.log('CheckPassword');
    this.Execute({...});
    ...
    return true;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...