ts-reset TypeScript

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;
  • после парсинга неизвестных данных используется валидатор.