Цель — показать, где TS дает иллюзию безопасности позволяя получить ошибки во время работы программы.
Мы не будем говорить о багах, в TS их достаточно
1,500 open bugs and 6,000 closed (‘is:issue is:open label:Bug’)
Все примеры будет рассмотрены при:
- TS strict mode включен (написал статью пока разбирался)
- Без явных «any»: «as any», «Objects», «Function», {[key: string]: unknown}
- Без неявных «any»: (noImplicitAny): не типизированные импорты (pure JS files), неправильный вывод типов
- Без ложных догадок о типах: ответ от сервера, типизация сторонних библиотек
Содержание:
- Введение
- Nominal types, custom types — когда вещи кажутся одинаковым, но такие разные
- Type variance, exact types — об отношении между типами
- Refinement invalidation — поговорим о доверии
- Exceptions — стоит ли признаваться, когда накосячил?
- Unsafe operations — уверенность не всегда идет на пользу
- Бонусные случаи — проверка типов на этапе PR ревью
- Заключение