TGViewer
{ Снежные строки } { Снежные строки } @snowlines · 89 subscribers
Post #87 250
❄️ Недавно посетила конференцию DUMP — это первая конференция, на которой я была оффлайн.
Все очень понравилось, и наконец-то дошли руки разобрать доклады.
Хочу начать делиться краткими выжимками докладов

Тема: Тестирование сложных утилитарных типов в реальных проектах
Автор рассказывал про TypeScript и тестирование сложных типов.
Честно, раньше я вообще не задумывалась об этом

❕ Проблема
TypeScript не умеет сравнивать типы напрямую как T1 === T2 на уровне кода.

❕ Решение
Пишем специальные вспомогательные типы, которые проверяют "эквивалентность" типов во время компиляции.

type Expect<T extends true> = T;

type Equals<T1, T2> =
(<T>(x: T) => T extends T1 ? 2 : 1) extends
(<T>(x: T) => T extends T2 ? 2 : 1) ? true : false

type NotEquals<T1, T2> = true extends Equals<T1, T2> ? false : true;


Захотелось взять это с собой в рабочие или личные проекты, но поняла, что настолько сложные типы я почти не использую (и в проде у нас тоже не используются).
Теперь хотя бы буду иметь в виду, что так можно.

Вообще прикольно, как в TypeScript можно завернуть очень нетривиальную логику,
Обычно используются какие-то базовые утилитарные типы - и всё

Вот ссылки на статьи, чтобы разобраться более подробно:
https://habr.com/ru/companies/cloud_ru/articles/860764/
https://habr.com/ru/companies/cloud_ru/articles/860770/
https://habr.com/ru/companies/cloud_ru/articles/868762/
https://habr.com/ru/companies/cloud_ru/articles/860778/
https://habr.com/ru/companies/cloud_ru/articles/865118/
  • 🔥 11
More from @snowlines
  1. Jul 8, 2025Post #94
  2. Jul 3, 2025❄️ Вернулась с отпуска, сейчас нужно заново научиться работать
  3. Jun 9, 2025❄️ Хочу начать серию постов про Redux Redux - state manager, которым я пользуюсь, как в ли…
  4. Jun 5, 2025Post #91
  5. Jun 5, 2025#Задачи
  6. May 24, 2025❄️ Функция высшего порядка Тема, которую можно встретить на собеседованиях очень часто. Да…
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 →