使用品牌类型设计

Dive into business data optimization and best practices.
Post Reply
Noyonhasan617
Posts: 196
Joined: Thu Jan 02, 2025 8:16 am

使用品牌类型设计

Post by Noyonhasan617 »

如何提高用户 ID 和电子邮件地址的类型安全性
用户ID和电子邮件地址通常表示为“数字”或“字符串”类型,但如果不区分,错误的数据可能会混入系统中。
例如,如果您将电子邮件地址作为“字符串”类型进行管理,它们很容易与其他字符串数据混淆。
使用品牌类型可以让您清楚地区分它们。

类型 UserID = 数字 & { __brand: "UserID" };
类型 Email = string & { __brand: "Email" };

函数 createUserId(id:数字):用户 ID {
返回 id 作为用户 ID;
}

函数 createEmail(电子邮件:字符串):电子邮件 {
以电子邮件形式返回电子邮件;
}
让您能够区分用户ID与普通数字、电子邮件地址与普通字符,并进行安全的管理。

金融系统中品牌类型的用例
金融体系需要严格管理货币单位和金额。
如果使用普通的`number`类型,则存在混合不同货币的风险,例如日元(JPY)和美元(USD)。
为了防止这种情况,您可以使用品牌类型来区分不同的货币。

类型 JPY = 数字 & { __brand: "JPY" };
类型 USD = 数字 & { __brand: "USD" };

函数 convertToJPY(金额:数字): JPY {
返回金额以日元计算;
}

函数 convertToUSD(金额:数字): USD {
返回金额(美元);
}
这将防止日元和 中国学生数据 美元意外混合,并提高财务计算的安全性。
API
在设计 API 时,强制传递到端点的请求参数的类型安全非常重要。
例如,如果订单ID和用户ID都是“string”类型,则可能会传递错误的值。
使用品牌类型可以帮助防止这个问题。

类型 OrderID = string & { __brand: "OrderID" };
类型 UserID = string & { __brand: "UserID" };

函数 fetchOrderDetails(orderId: OrderID) {
// 通过 API 请求获取订单信息
}
这有助于防止引入错误数据并使 API 设计更加稳健。
Post Reply