Обновить
6
0

FE engineer

Отправить сообщение

Typescript: unsound behavior или поблажки надежности

Время на прочтение11 мин
Охват и читатели6.9K
Цель — показать, где 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 ревью
  • Заключение
Читать дальше →

Strict mode in TypeScript: описание флагов, примеры

Время на прочтение4 мин
Охват и читатели14K

--strict флаг включает следующие флаги (и в какой версии добавлены):


--strictNullChecks (2.0)
--alwaysStrict (2.1)
--noImplicitAny
--noImplicitThis (2.0)
--strictBindCallApply (3.2)
--strictFunctionTypes (2.6)
--strictPropertyInitialization (2.7)

Приведем примеры и попытаемся разобраться в одном месте, что все это значит.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Беларусь
Зарегистрирован
Активность