Typescript将所有枚举值映射为键

埃里亚斯

我声明了一个映射,以便可以将数字枚举值转换为我们的API期望的值。

export const StatusMap: ReadonlyMap<Status, string> = new Map([
    [Status.NEW, 'new'],
    [Status.PENDING, 'pending'],
]);

但是,当我这样做时,statusMap.get(Status.NEW)它总是告诉我返回值可能是不确定的。有没有一种方法可以强制映射(或类似映射)包含所有枚举值?

是的,我知道您可以做到

export enum Status {
    NEW = 'new',
    PENDING = 'pending',
}

但说实话,这种破坏枚举(IMO)的观点。

Aleksey L.

如果可以使用常规对象代替Map,则可以将其定义为Record枚举成员:

const statusMap: Record<Status, string> = {
    [Status.NEW]: 'new',
    [Status.PENDING]: 'pending',
};

操场


另一种选择是使用类型断言,以保证所有枚举成员都在映射中:

type StatusMap = { get<T extends Status>(status: T): string }

const statusMap = new Map([
    [Status.NEW, 'new'],
    [Status.PENDING, 'pending'],
]) as StatusMap;

**请注意,使用这种方法不能保证所有枚举成员在运行时都在映射中,因此,如果您选择这种方式-最好通过单元测试覆盖它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TypeScript:将键-值类型反向映射到值-键

来自分类Dev

带有枚举键和不同值类型的映射

来自分类Dev

将幻数映射为枚举值,反之亦然

来自分类Dev

scala 将一个键的所有映射值添加到队列中

来自分类Dev

在Typescript中将类型定义为“枚举中的所有可能”

来自分类Dev

Spring RequestBody Mapping将所有属性映射为空值

来自分类Dev

Spring RequestBody Mapping将所有属性映射为空值

来自分类Dev

将UnicodeString映射为Class作为值C ++ Builder的键

来自分类Dev

将 javascript 数组从特定值映射为新键

来自分类Dev

Java的哈希映射:得到所有键大于X值

来自分类Dev

串联所有映射相同键中的值的文件

来自分类Dev

创建一个以整数为键,以枚举为值的映射

来自分类Dev

在Python中:从键列表创建字典,但将所有值设置为0?

来自分类Dev

TypeScript-将类存储为映射值?

来自分类Dev

使用pytest参数化键和值列表的字典映射中的所有键/值对吗?

来自分类Dev

是否可以将类中的枚举属性设置为“所有可用枚举”?

来自分类Dev

为数组中的所有值设置相同的键

来自分类Dev

将Swift枚举与关联值映射

来自分类Dev

XQuery映射:将具有相同键的值附加到现有映射

来自分类Dev

通过键映射Typescript枚举而不使用Map?

来自分类Dev

WPF C#-将枚举绑定到ComboBox,但不使用所有枚举值

来自分类Dev

将TreeMap中的列值映射为键,以行号作为值

来自分类Dev

将枚举转换为值数组(将所有JSON值放入数组中)

来自分类Dev

将Dictionary的所有值移至新键

来自分类Dev

将Dictionary的所有值移至新键

来自分类Dev

将键中的值与所有数组项合并

来自分类Dev

将值附加到 python 字典的所有键

来自分类Dev

Python颜色映射,但所有零值都映射为黑色

来自分类Dev

如何声明以枚举为键的std :: map和具有不同签名的函数为值的声明?

Related 相关文章

  1. 1

    TypeScript:将键-值类型反向映射到值-键

  2. 2

    带有枚举键和不同值类型的映射

  3. 3

    将幻数映射为枚举值,反之亦然

  4. 4

    scala 将一个键的所有映射值添加到队列中

  5. 5

    在Typescript中将类型定义为“枚举中的所有可能”

  6. 6

    Spring RequestBody Mapping将所有属性映射为空值

  7. 7

    Spring RequestBody Mapping将所有属性映射为空值

  8. 8

    将UnicodeString映射为Class作为值C ++ Builder的键

  9. 9

    将 javascript 数组从特定值映射为新键

  10. 10

    Java的哈希映射:得到所有键大于X值

  11. 11

    串联所有映射相同键中的值的文件

  12. 12

    创建一个以整数为键,以枚举为值的映射

  13. 13

    在Python中:从键列表创建字典,但将所有值设置为0?

  14. 14

    TypeScript-将类存储为映射值?

  15. 15

    使用pytest参数化键和值列表的字典映射中的所有键/值对吗?

  16. 16

    是否可以将类中的枚举属性设置为“所有可用枚举”?

  17. 17

    为数组中的所有值设置相同的键

  18. 18

    将Swift枚举与关联值映射

  19. 19

    XQuery映射:将具有相同键的值附加到现有映射

  20. 20

    通过键映射Typescript枚举而不使用Map?

  21. 21

    WPF C#-将枚举绑定到ComboBox,但不使用所有枚举值

  22. 22

    将TreeMap中的列值映射为键,以行号作为值

  23. 23

    将枚举转换为值数组(将所有JSON值放入数组中)

  24. 24

    将Dictionary的所有值移至新键

  25. 25

    将Dictionary的所有值移至新键

  26. 26

    将键中的值与所有数组项合并

  27. 27

    将值附加到 python 字典的所有键

  28. 28

    Python颜色映射,但所有零值都映射为黑色

  29. 29

    如何声明以枚举为键的std :: map和具有不同签名的函数为值的声明?

热门标签

归档