169 похожих чатов

Всем привет, используется TS 4.5.5, был изначально интерфейс A, потом

появился еще B, объединил их в типе MyType MyType = interface A { operator: 'bla', value: string } | interface B { operator: 'foo', value: string[] }, добавил два гарда, чтобы выводить A или B по полю operator. Теперь понадобилось еще расширить B => interface B { operator: 'foo', value: string[] | C[] } и хочу теперь различать interface B с value: string[] и interface B с value: C[], как это лучше описать? Чтобы сделать гард на interface B с value: C[] надо на что-то ссылаться, мб правильнее разделить interface B на два?

9 ответов

4 просмотра

value: string[] | C[] C - это generic или что?

Просто тогда можно так описать interface B <C = string> = { operator: 'foo', value: C[] }

Leonid-Симаков Автор вопроса

я скажу страшное - может вам типы и не нужны? type Either<A, B> = [A, undefined?] | [undefined, B]; вот в таких шутках это удобно а у вас какой-то матан из типов получается просто после таких вопросов я понимаю js-еров которые говорят что ts делает все излишне сложным go вообще пошел по пути "не каждому девелоперу нужна вся мощь языка" поэтому лучше мы не дадим всю мощь нежели дадим писать разрабу нечитаемый код

Ig
я скажу страшное - может вам типы и не нужны? typ...

Это на самом деле не оч хороший Either, лучше своровать его из фп-тс

Одним гвардом это не сделать, тк гвард не хранит контекст того какое поле реализуется

начали вот тут я на шляпу автора говорил что если ты создал из типов стейтмашину - может тебе типы и не нужны и привел пример простого кода где типы нужны

Ig
начали вот тут я на шляпу автора говорил что есл...

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

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
если загрузчик efi? если сама PML4 PDPT PDT PT лежит в неудобном для меня месте?
Vi Chapmann 🪙
8
Карта сайта