如何解决Typescript:如何使用枚举强制数组仅包含该枚举中的特定值?
我在Angular中有一个HTTP服务,该服务返回特定用户允许的访问权限。样本响应如下:-
{
"accessId": 4209318492034,"folderPath": "data/sample_folder/","permissions": [
"READ","WRITE"
]
}
具体来说,权限字段是一个数组,将仅包含以下字符串,"READ"
(必填)和"WRITE"
(可选,可能存在或可能不存在)。
我想使用接口键入此响应,并且为了强制在权限数组中仅存在这些字符串,我创建了一个Enum,如下所示:-
enum Permissions {
READ = 'READ',WRITE = 'WRITE'
}
但是在界面中按如下方式使用它不起作用:-
export interface UserAccess {
accessId: string;
folderPath: string;
permissions: Permissions[]
}
如何强制权限数组仅包含定义的Permissions字符串枚举中的值?
解决方法
不使用枚举,请使用类型:
export type Permissions = 'READ'|'WRITE'
export interface UserAccess {
accessId: string;
folderPath: string;
permissions: Permissions[]
}
,
您可能要尝试以下操作:
export interface UserAccess {
permissions: (keyof typeof Permissions)[]
}
注意:TypeScript只是一个编译时概念,在运行时不执行任何操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。