【发布时间】:2021-06-14 01:55:17
【问题描述】:
我创建了一个 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[]
我怎样才能为特定的 Enum 值定义 keyof 的类型?
【问题讨论】:
-
提供
User类型。目前尚不清楚您要做什么。 -
我 99% 确定您只想要字符串枚举并想要
userTags: UserTags[],但我会在答案中解释
标签: typescript