Улучшение дефолтного поведения TypeScript
ts-reset — утилита, которая расширяет стандартную типизацию в TypeScript, устраняя устаревшие и нестрогие участки в базовых API. Подключается на уровне проекта и повышает строгость типизации в ряде API.
Установка
bash
npm install --save-dev ts-resetts
// reset.d.ts
import "@total-typescript/ts-reset";Также возможно установить отдельные правила:
ts
// reset.d.ts
// Makes JSON.parse return unknown
import "@total-typescript/ts-reset/json-parse";
// Makes await fetch().then(res => res.json()) return unknown
import "@total-typescript/ts-reset/fetch";Основные изменения
JSON.parse,.json(),localStorage,sessionStorageтеперь возвращаютunknown, а неany.filter(Boolean)корректно удаляетfalsy-значения.includes(),.indexOf(),Set.has(),Map.has()не требуют точного сравнения (чего и пытаемся добиться, вызывая их)Array.isArray()больше не считаетany[]безопасным
⚠️ Не рекомендуется использовать в библиотеках, так как изменения глобальных типов могут повлиять на конечные проекты, в которые библиотека будет установлена.
Внутри существующих проектов подключение ts-reset, как правило, не вызывает проблем: типы становятся строже, но остаются совместимыми с корректным кодом. Если после подключения появляются ошибки — скорее всего, это участки, где типизация и так была небезопасной.
