Вау... Блин, вот сейчас кажется, что так просто. А пару часов с этим сам бился. Спасибо!
Воспользуюсь случаем и задам вам ещё один вопрос - а как провернуть это без класса? https://clck.ru/T77Jb
А, не, я не заметил, вы, получается, опять захардкодили boolean, только в другом месте. Я имею в виду, что мне надо поддерживать сразу все возможные варианты, нельзя хардкодить возвращаемый тип
ну так а как оно по твоему поймет что Strategy это IStrategy<boolean>
Таким же образом, каким оно понимает без фабрики https://clck.ru/T77KY
ну так все верно, глянь на сигнатуру фабрики class Factory<T1> { create<T extends IStrategy<T1>>(fn: Constructor<T>) { return new Context(new fn); } } - ты создаешь сущность Constructor<T> а в контексте ты явно указываешь что constructor(private strategy: IStrategy<T>)
Я не сомневаюсь, что компилятор в данном случае прав, он, несомненно, верно всё компилирует. Дело в том, что код, который я написал, производит результат, который мне не подходит. Вот у меня вопрос - как изменить код, чтобы в результате он принимал стратегии с любым типом данных, и возвращал соответствующий тип данных?
ну вон со вторы дженериком есть решение, я тебе так с ходу тоже не скажу, надо тоже чуть подумать + вообще лучше иди в чатик по TS
Обсуждают сегодня