核心结论
TypeScript 采用结构化类型系统:两个值只要结构兼容,通常就能相互赋值。因此 UserId、OrderId、已验证邮箱和普通字符串若都直接写成 string,编译器无法区分它们。品牌类型通过在基础类型上附加一个仅用于类型检查的标记,人为建立轻量的名义边界。品牌适合表示底层结构相同、业务含义不同且误传成本较高的值,但它只提供编译期约束,不是运行时安全证明。可信品牌值必须由少量解析器、验证器或受控构造函数产生,不能依赖调用方随意断言。
底层机制
常见实现使用 unique symbol 作为不可自然构造的属性键:
declare const userIdBrand