typescript - 在 Typescript 中定义枚举类型的数组
问题描述
我创建了一个 Typescript DTO,我想在其中确保字符串列表的类型安全(这些字符串是从枚举类型派生的。
export class ConnectedUserWithPhotosDTO extends UserWithPhotosDTO {
userTags: keyof User["userTags"][]
constructor(user: User, photos: ResponsePhotoDTO[]) {
super(user, photos)
console.log(user.userTags)
this.userTags = user.userTags;
}
}
打字稿编译器抱怨以下错误:
Type 'UserTags[]' is not assignable to type 'number | keyof UserTags[][]'.
显然,价值userTags
评估为
number | keyof UserTags[][]
这是我正在定义的枚举定义。
export enum UserTags {
FITNESS = 'Fitness',
FOURTWENTY_FRIENDLY = '420 Friendly',
MEDITATION = 'Meditation',
DRINKS = 'Drinks',
DOGS = 'Dogs',
CATS = 'Cats',
FASHION = 'Fashion',
WINE_TASTING = 'Wine Tasting',
FOODIE = 'Foodie',
ART = 'Art',
PARTYING = 'Partying',
TRAVELIING = 'Travelling',
GAMING = 'Gaming',
}
在 User 类UserTags
中定义为:
@ApiProperty({ enum: UserTags, isArray: true, default: [] })
@Column('enum', { enum: UserTags, array: true, nullable: true, default: [] })
userTags: UserTags[]
如何仅定义keyof
特定 Enum 值的类型?
解决方案
您还可以执行以下操作:
const userTags: User['userTags'];
推荐阅读
- sql - 在postgresql数据库中查找今年加入的所有用户
- .net-core - 如何获取 CSharpCompilation 的 System.Collections 参考
- python - 了解使用生成器进行数据管道的程序的程序流程和代码
- c# - VS 解决方案调试源文件设置位置?
- python - 调用多个子进程命令并在子进程完成时重新启动任何命令
- javascript - 上传时出现 Codecov 问题
- vba - VBA Excel忽略PrintArea Pdf
- javascript - 我如何使用 javascript 显示超过 1 个项目
- mysql - 如何在 laravel 中最大化行大小 | mysql
- postgresql - INSERT ON DUPLICATE 语句返回什么?