Машинопись: Необоснованное Поведение Или Уступки Надежности

Цель состоит в том, чтобы показать, где TS создает иллюзию безопасности, допуская возникновение ошибок во время работы программы.

О багах говорить не будем, в TS их полно.

1500 открытых ошибок и 6000 закрытых («is:issue is:open label:Bug»).

Все примеры будут рассмотрены по адресу:

  • Т.

    С.

    строгий режим включено (написал статью, пока разбирался)

  • Без явного «любого»: «как любой», «Объекты», «Функция», {[ключ: строка]: неизвестно}
  • Без неявного «любого»: (noImplicitAny): нетипизированный импорт (чистые файлы JS), неправильный вывод типа.

  • Никаких ложных предположений о типах: ответ сервера, типизация сторонних библиотек
Содержание:
  • Введение
  • Номинальные типы, нестандартные типы – когда вещи кажутся одинаковыми, но такие разные
  • Вариантность типов, точные типы – о взаимосвязи между типами
  • Аннулирование уточнения – поговорим о доверии
  • Исключения – стоит ли признавать, что вы облажались?
  • Небезопасные операции – уверенность не всегда хороша
  • Бонусные кейсы — проверка типа на этапе PR-анализа
  • Заключение


Введение

Сложно ли написать функцию сложения двух чисел в JS? Возьмем наивную реализацию
   

function sum(a, b) {

Теги: #typescript #типобезопасность
Вместе с данным постом часто просматривают: