Все очень понравилось, и наконец-то дошли руки разобрать доклады.
Хочу начать делиться краткими выжимками докладов
Тема: Тестирование сложных утилитарных типов в реальных проектах
Автор рассказывал про 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/