typescript - 打字稿字符串和字符串枚举 - 字符串不可分配
问题描述
Typescript 手册并没有真正给我太多关于如何正确使用字符串枚举的信息。
这是我的例子:
enum ICE_CREAM {
strawberry = "STRAWBERRY",
vanilla = "VANILLA"
}
type TORDER = {
greetings: string,
flavor: ICE_CREAM
}
const mockData: TORDER = {
greetings: "Hello",
flavor: "VANILLA",
}
这导致错误类型
'"VANILLA"' 不可分配给类型 'ICE_CREAM'。(2322)
我的后端将发送包含“风味”键的数据,我想确保它的值是我的ICE_CREAM
字符串枚举中声明的值之一。我究竟做错了什么?
解决方案
根据设计,您不能将字符串分配给类型为枚举的属性。您必须引用枚举才能分配其值之一。
flavor: ICE_CREAM.vanilla
但是,使用字符串联合类型有更好的方法。这样你就可以保持你的类型强大,同时让你的字符串成为字符串。
type ICE_CREAM = 'STRAWBERRY' | 'VANILLA';
type TORDER = {
greetings: string,
flavor: ICE_CREAM
}
const mockData: TORDER = {
greetings: "Hello",
flavor: "VANILLA", // Assigns without error
}
const badMockData: TORDER = {
greetings: "Hello",
flavor: "vanilla", // Error: flavor can only be 'STRAWBERRY' or 'VANILLA'
}
推荐阅读
- jquery - 使用css动态禁用一行
- swift - 如何找到“fopen 数据文件失败:errno = 2(没有这样的文件或目录)”的违规文件
- reactjs - 组件未包装
- spring-batch - 如何禁用 Spring 批处理元数据表中的日志保存?
- c# - 在查询中使用 MAX(CASE WHEN) 出现奇怪的异常: DB2.iSeries.iDB2DCFunctionErrorException: '发生意外异常
- unit-testing - Kotlin 测试预期 SingletonMap 但为 LinkedHashMap
- java - 带有两个“orderby”子句的复合查询在 Firestore、Android 中不起作用
- python - 如何使用 TensorFlow Federated 框架在有状态的联邦学习中初始化客户的状态?
- javascript - python中有休息运算符吗?
- c++ - 模板类的模板好友功能(参数较多的好友)