Ограничить универсальный тип, используя другой универсальный тип в Typescript - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть несколько базовых классов:

class BaseService<E> {
    constructor(protected entity: E) {}
}

class BaseController<E, S extends BaseService<E>> {
    constructor(protected service: S) {}
}

Затем у меня есть конкретные экземпляры вышеуказанных классов:

class ArticleService extends BaseService<Article> {}

class ArticleController extends BaseController<Article, ArticleService> {}

Вопрос : могу ли я как-нибудьисключить E из BaseController?

Когда я утверждаю в ArticleController, что S равно ArticleService, этого должно быть достаточно - ArticleService уже определено как расширение BaseService<Article>.Я не использую Article в ArticleController, это только для того, чтобы удовлетворить определение сервиса.

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете просто удалить E и использовать S extends BaseService<any>.Вы нигде не используете эту информацию о типе, так что это совершенно нормально.

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