【发布时间】:2020-09-21 13:02:52
【问题描述】:
是否可以强制枚举数组包含 EPostFromField 枚举的每一个值?
这是一个 mongodb 模式,如果以后添加更多枚举,用例将用于验证枚举字段(即:让编译器抛出错误,因为数组没有枚举所有枚举值) .
作为奖励,我想下一个级别将是一个解决方案,它还保证枚举数组值是唯一的:)
export const enum EPostFromField {
Resident = 'resident',
AdminUser = 'admin-user', // Admin <user name>
BoardUser = 'board-user', // Board <user name>
AdminSociety = 'admin-society', // Admin <community name>
BoardSociety = 'board-society', // Board <community name>
}
showPostAs: {
type: String,
default: EPostFromField.Resident,
enum: [
EPostFromField.Resident,
EPostFromField.AdminUser,
EPostFromField.BoardUser,
EPostFromField.AdminSociety,
EPostFromField.BoardSociety,
] as EPostFromField[], // DEVNOTE: Improve typing to enforce *every* unique key of enum
},
【问题讨论】:
-
枚举对象和所有对象一样,具有不同的键和值。
"Resident"是一个键,但EPostFromFileld.Resident是它的值。您谈到想要保证唯一的 keys,但您正在制作一个 values 数组。当您的意思是“价值”时,您是否使用了“键”这个词?如果没有,我很困惑;你能详细说明一下吗? -
@jcalz 是的。对不起混淆。最终目标是让 mongodb 枚举字段包含(因此只接受)枚举 EPostFromField 的值。谢谢你,我会编辑这个问题。
标签: arrays typescript enums