Brand

Crea tipos nominales/branded para IDs y primitivos con tipos seguros.

#types #typescript #utility-type #branding
export type Brand<T, Name extends string> = T & {
readonly __brand: Name;
};
// Usage
type UserId = Brand<string, 'UserId'>;
type OrderId = Brand<string, 'OrderId'>;
function getUser(id: UserId) { /* ... */ }
const userId = 'user_123' as UserId;
const orderId = 'order_456' as OrderId;
getUser(userId); // OK
getUser(orderId); // Error: OrderId not assignable to UserId

Comparte este snippet

Comentarios