TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.2K subscribers
Post #6992 3.39K
🛡 Runtypes — безопасная валидация структур в TypeScript

Когда вы получаете непроверенные данные (например, из JSON, API, локального хранилища), обычные типы TypeScript никак не защищают вас от ошибок времени выполнения.

😶‍🌫️ Runtypes позволяют валидировать такие данные на лету, описывая структуру через валидаторы, а не просто типы.

😶‍🌫️ Пример

Типы на TypeScript:
type Vector = [number, number, number]
type Planet = { type: "planet", location: Vector, mass: number, population: number, habitable: boolean }


Валидация через Runtypes:
import { Number, Boolean, Tuple, Literal, Object } from 'runtypes'

const Vector = Tuple(Number, Number, Number)
const Planet = Object({
type: Literal("planet"),
location: Vector,
mass: Number,
population: Number,
habitable: Boolean,
})


Проверка данных:
Planet.check(someValue)  // выбросит ошибку, если структура не совпадает


Если структура не соответствует ожидаемой:
— выбрасывается ValidationError
— доступен объект failure с подробностями:
➡️ где именно ошибка
➡️ что ожидалось и что получено
➡️ можно использовать для i18n и UI

😶‍🌫️ Что поддерживает Runtypes

— Примитивы
— Объекты и массивы
— Кортежи
— Объединения (Union)
— Пересечения (Intersect)
— Пользовательские ограничения (например, длина массива)
— Валидация вложенных структур

😶‍🌫️ Когда пригодится

— Проверка данных из API, JSON, UI
— Сложная вложенная структура, которую нужно валидировать
— Автогенерация UI и ошибок
— Безопасность в рантайме (а не только на этапе компиляции)

🔗 GitHub: https://clc.to/H_xiTA

Библиотека питониста #буст
  • ❤ 7
  • 👍 2
  • 🔥 1
More from @pyproglib
  1. Oct 12, 2026👀 Как вы смотрите видео? Разбираете урок, слушаете интервью фоном или начинаете на телефо…
  2. Oct 9, 2026Post #7855
  3. Oct 9, 2026Showboat и Rodney помогают показать работу ИИ-агента Саймон Уиллисон собирает демонстрации…
  4. Oct 7, 2026🎓 С Днём учителя! Учиться никогда не поздно — особенно когда технологии меняются быстрее,…
  5. Oct 3, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  6. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →