【发布时间】:2023-04-04 22:42:01
【问题描述】:
我想把一些 JS 数组转换成TypeScript enums。
我知道我能做到:
export enum FRUIT {
PEACH,
BANANA
}
但在这种情况下,'FRUITS' 是从单独的文件中导出的,格式如下:
const FRUIT = {
PEACH: "delicious peach",
BANANA: "wow a banana that's awesome",
PEAR: "gross pear do not allow pear using the Enum"
};
(我想确保只有一部分水果,例如“美味桃子”可以设置为 ACCEPTABLE_FRUIT )
我需要做的:
export enum ACCEPTABLE_FRUIT {
FRUITS.PEACH,
FRUITS.BANANA
}
但是这是一个语法错误:
只有数字枚举可以有计算成员,但这个表达式的类型是“字符串”。如果您不需要详尽检查,请考虑改用对象字面量。
我如何在 TypeScript 枚举中使用属性键 (object.key)? 或者,如果我不能,我该如何解决语法错误?
【问题讨论】:
-
什么是
FRUITS?您似乎正在尝试将其中的 values 用作 names,这没有多大意义 - 你想要例如export enum FRUIT_TYPES { PEACH = FRUIT.PEACH, ... }?或者也许是你只能使用的东西,例如keyof typeof FRUITS(如"PEACH")作为值?一旦你创建了它,你将如何使用它? -
请edit问题包含此信息。
-
那组字符串是
keyof typeof FRUIT吗?请将其放在问题中,并附上一个示例,说明您打算如何使用它。 -
在操场上试试 -
type FRUIT_NAMES = keyof typeof FRUIT将是"PEACH" | "BANANA" | "PEAR"。 -
那么是的,您可能想要一个带有
Pick(“只有桃子或香蕉”)或Omit(“不是梨”)的“valueof” - 请参阅typescriptlang.org/docs/handbook/utility-types.html。不过,这不会让你进入枚举。
标签: typescript enums