import { BrandAndFlavorTypeTagUniqueSymbol } from "./BrandAndFlavorTypeTagUniqueSymbol"; /** * Flavoring is a Type level concept to create "nominal types". * * Alternatively, see `Branding` type, it is a stricter "Flavored type" * * It works by combining opaque types with primitive types (`string`, `number`) * to "flavor" the primitive type. * * This means that * 1. Flavored types are incompatible with each other where one flavored type * cannot be assigned to another flavored type. * 1. Unlike branded types, flavored types allow implicit conversions of primitive * type to flavored type without any validation or type casting, which means * all primitive type can be treated as the flavored type easily, which is why * this is a "weak branded type". * * References: * 1. * 1. */ export interface Flavoring { readonly [BrandAndFlavorTypeTagUniqueSymbol]?: Flavor; } /** * See the `Flavoring` type for details. */ export type MakeFlavored = TypeToFlavor & Flavoring; /** * Create weak 'flavored' string, i.e. implicit string to flavored type * conversion allowed. */ export type MakeFlavoredString = MakeFlavored; /** * Create weak 'flavored' number, i.e. implicit number to flavored type * conversion allowed. */ export type MakeFlavoredNumber = MakeFlavored; //# sourceMappingURL=Flavor.d.ts.map