
使用 typescript 时,您可能会发现自己需要定义一个联合类型和一个包含该类型所有可能值的数组。一种常见的方法是编写如下内容:
type taste = 'しょうゆ' | 'みそ' | 'とんこつ'; const tastes = ['しょうゆ', 'みそ', 'とんこつ'];
乍一看,这似乎不错。然而,这里有一个隐藏的问题:每次想要更改或添加选项时,都需要更新 taste 联合类型和品味数组。这种重复的工作可能会导致错误,并使维护代码变得更加乏味。
幸运的是,有一种方法可以通过减少冗余来简化这一过程。通过在 typescript 中使用 as const 断言和 typeof,您可以将联合类型和数组的定义合并到一处。以下是重构上述代码的方法:
const tastes = ['しょうゆ', 'みそ', 'とんこつ'] as const; type taste = (typeof tastes)[number];
这种方法有几个好处:
本系统经过多次升级改造,系统内核经过多次优化组合,已经具备相对比较方便快捷的个性化定制的特性,用户部署完毕以后,按照自己的运营要求,可实现快速定制会费管理,支持在线缴费和退费功能财富中心,管理会员的诚信度数据单客户多用户登录管理全部信息支持审批和排名不同的会员级别有不同的信息发布权限企业站单独生成,企业自主决定更新企业站信息留言、询价、报价统一管理,分系统查看分类信息参数化管理,支持多样分类信息,
0
单一事实来源:
您只需在味道数组中定义一次值列表。 taste 类型自动从此数组派生,因此如果您需要更新列表,只需在一处执行即可。
类型安全:
通过使用 as const,typescript 将品味数组视为具有文字类型的元组,而不仅仅是字符串数组。这可确保口味类型保持准确并与口味中的值保持一致。
更好的维护:
由于 taste 类型是从数组生成的,因此不存在类型与实际值不匹配的风险。这减少了出现错误的可能性,并使代码更易于维护。
现在,每当您在代码中使用 taste 类型时,它都保证与味道数组中的值匹配:
function describeTaste(taste: Taste): string {
switch (taste) {
case 'しょうゆ':
return 'Savory soy sauce flavor.';
case 'みそ':
return 'Rich miso flavor.';
case 'とんこつ':
return 'Creamy pork broth flavor.';
default:
return 'Unknown taste';
}
}
const allTastes: Taste[] = tastes; // Safe, because they match the type!
这种模式不仅提高了代码的可读性,而且还确保它不易出错,特别是在处理需要保持同步的多个值时。
通过采用这种策略,您可以使您的 typescript 代码更具可维护性和可扩展性。当您处理大量值或您的代码库随着时间的推移而增长时,这特别有用。
以上就是简化 TypeScript 中的联合类型和数组的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号