如何使用Enum定义Typescript中字符串的值[duplicate]

nvbavucw  于 2022-11-30  发布在  TypeScript
关注(0)|答案(1)|浏览(114)

此问题在此处已有答案

How to create a union type from Enum values in TypeScript?(2个答案)
昨天关门了。
比如说我有像风箱一样枚举

export enum PERIOD {
  DAY = "DAILY",
  MONTH= "MONTHLY",
  YEAR= "YEARLY",
}

我有一个使用PERIOD作为接口变量

const period : keyof typeof PERIOD = "DAILY"

typescript 显示错误Type '"DAILY"' is not assignable to type '"DAY " | "MONTH"| "YEAR"'
如何使用枚举的值作为接口?

ee7vknir

ee7vknir1#

我不确定这是否可能。keyof将获得枚举的键,我不认为存在valueof操作符。
最简单的方法是使键与值匹配。

enum PERIOD {
  DAILY = "DAILY",
  MONTHLY = "MONTHLY",
  YEARLY = "YEARLY",
}

那么keyof typeof PERIOD就可以工作了。
另一个选择是定义枚举和一个对象,您可以键入该对象以获取值。

enum PERIOD {
  DAY,
  MONTH,
  YEAR,
}

export const periodMap: Record<PERIOD, string> = {
  [PERIOD.DAY]: 'DAILY',
  [PERIOD.MONTH]: 'MONTHLY',
  [PERIOD.YEAR]: 'YEARLY'
}

const period = periodMap[PERIOD.DAY]

相关问题