TGViewer
Андруша пишет код Андруша пишет код @xavescor_code · 1.33K subscribers
Post #318 2.09K
ts в последнее время выбешивает отсутсвием спеки. 2 истории у меня про это:
История первая. Дженерики.

Короч, как вы знаете у TS есть условия на типах, которые выглядят как

type A<T> = T extends string ? T : number;

Этот механизм позволяет пилить довольно суровую наркоманию по типу той, которая находится на скриншоте. Однако эта штука не только суровая, забористая, так что её нормально не смогли спроектировать перед добавлением даже ребята из MS.

Мы имеем на проекте styled-components(SC), react-select(RS), react-hook-form(RHF) и собственную логику для стилизации этих селектов(далее L). И наш код выглядит как-то так:
RHF(L(SC(RS()))). Т.е. декораторы, которые декораторами погоняют, то бишь обычный код для дизайн системы.

В итоге, так как RHF и RS имеют долбанутые дженерики в своей логике, то TS в какой-то момент превращает тип type X<T> = T extends true ? string : number просто в string | number. Потому что походу вычисления достаточно сложные и, так как нет спеки, можно и захачить костыль, из-за чего весь код превращается в единую семантическую ошибку.

Как это решать? Я пока выработал одно правило. Если ты пишешь декораторы, то под ними желательно не иметь дженериков в принципе. А если они нужны, то хотя бы избегать условий в них, чтобы в неожиданный момент эти условия не схлопнулись.
Для избегания условий можно поступать в стиле golang и писать что-то в стиле

type SingleSelect<OT> = ReactSelect<OT, false>;
type MultiSelect<OT> = ReactSelect<OT, true>;


Да, получается шумно, но оно хотя бы работает
  • 🤡 14
  • 💩 9
More from @xavescor_code
  1. Sep 29, 2026https://x.com/thsottiaux/status/2104823812042940713 Ну, впервые в жизни ванганул, и походу…
  2. Sep 24, 2026Тут в моём казахстанском пузыре происходит прикольная вещь. Ща, в пятницу, в кз обьявлен т…
  3. Sep 22, 2026Чуть чуть проснусь от спячки по важному поводу. Мы походу пришли к AGI в ЛЛМках. Ну, точне…
  4. Aug 6, 2026Уже почти месяц прошел после взлома моделями OpenAI – HuggingFace. Спустя это время каждая…
  5. Jul 28, 2026https://t.me/denissexy/11581 Знаете, меня очень сильно удивляет вопрос: какого чёрта подоб…
  6. Jul 28, 2026Антропик: китайцы дистилируют наши модели, надо забанить их Опенаи: китайцы дистилируют на…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →