NodeJS 如何从Typescript中的接口创建枚举

li9yvcax  于 11个月前  发布在  Node.js
关注(0)|答案(1)|浏览(140)

我正在使用Typescript编写的Parse Server构建一个后端。Parse在许多地方使用“魔术字符串”,我试图避免它们。
例如,如果我有一个名为Item的解析类,它有一个属性color,我将通过以下方式获得该属性:myItem.get('color')
我希望使这个类型安全,并为color使用枚举而不是字符串本身。我已经为Item的所有属性定义了一个接口,如下所示:

import { Attributes, Object } from 'parse'

export interface ItemAttributes extends Attributes {
  color: string
  size: number
  enabled: boolean
}

export class Item extends Object<ItemAttributes> {
  constructor (data?: Partial<ItemAttributes>) {
    super('Item', data as ItemAttributes)
  }
}

字符串
有没有一种方法可以从Typescript中的ItemAttributes接口生成一个枚举,而不必像这样为每个解析类创建一个新的枚举?

export enum ItemKeys {
  color = 'color'
  size = 'size'
  enabled = 'enabled'
}


因此,我希望能够像这样在Parse getter中使用我的新枚举:

myItem.get(ItemKeys.color)

m4pnthwp

m4pnthwp1#

你可以用TS-morph生成枚举
文档是缺乏的,它也不容易使用,在大多数情况下,所有这些都是字符串操作,所以它不适合胆小的人
您可以使用chatGPT生成所需的确切代码
你可以这样做:

keyValueEnum = enumFile.addEnum({
            name: keyValueEnumName,
            isExported: true,
        });
        keyValueEnum.addMember({
            docs: ['some teext formatted with JS Docs'],
            name: key,
            value: 'A String you want the Value to be',
        });

字符串

相关问题