首页 > 解决方案 > 在 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 值的类型?

标签: typescript

解决方案


您还可以执行以下操作:

const userTags: User['userTags'];


推荐阅读