Перейти к основному содержимому
Об авторе
Проекты
Знания
Знания/TypeScript/branded-types

Что такое брендированные типы (Branded Types) и зачем они нужны?

УглублённыйПаттерны типизацииПродвинутые типы
  • Имитация номинативной типизации в структурной системе TypeScript
  • Паттерн: type UserId = number & { readonly __brand: "UserId" }
  • Предотвращает смешение семантически разных типов (UserId и OrderId, обе number)
  • Валидация на границах: фабричная функция проверяет и «брендирует» значение
  • Альтернатива: unique symbol как бренд
  • Утилита для снятия бренда: type Unbrand<T> = T extends infer U & { __brand: any } ? U : T
  • Главная
  • Об авторе
  • Проекты
  • Знания
Логотип nKolmykov