NPM: @total-typescript/ts-reset
Что это такое?
ts-reset - набор улучшений стандартных TypeScript-типов. Он делает некоторые стандартные API строже и ближе к реальному поведению JavaScript.
Примеры проблем стандартных типов:
JSON.parseвозвращаетany;Array.prototype.includesне всегда удобно работает с narrow types;- некоторые методы возвращают слишком широкие или слишком слабые типы.
Установка
pnpm add -D @total-typescript/ts-resetПодключение
Создаём файл, например src/reset.d.ts:
import '@total-typescript/ts-reset';Файл должен попадать в include в tsconfig.json.
{
"include": ["src"]
}Пример пользы
После подключения JSON.parse перестаёт быть дырой в типах через any и требует явной проверки.
const value = JSON.parse(rawJson);Дальше такое значение лучше проверять через Zod, Valibot, TypeBox или другой валидатор.
Когда использовать
ts-reset полезен почти в любом строгом TypeScript-проекте, но его лучше подключать в начале проекта. В старом коде он может подсветить много мест, где раньше типы были слишком мягкими.
Плюсы
- делает стандартные типы безопаснее;
- уменьшает случайное протекание
any; - хорошо сочетается с runtime-валидаторами.
Минусы
- может подсветить много старого кода;
- глобально меняет поведение стандартных типов;
- лучше подключать осознанно и документировать для команды.
Когда использовать
- проект новый или уже придерживается строгого TypeScript;
- команда хочет безопаснее работать с
JSON.parseи стандартными API; - после парсинга неизвестных данных используется валидатор.