跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • TypeScript 里你会把 Enum 当作 Map 用吗?
未分類
25 12 月 2020

TypeScript 里你会把 Enum 当作 Map 用吗?

TypeScript 里你会把 Enum 当作 Map 用吗?

資深大佬 : Biwood 1

比如有这样一个 Map:

const FruitMap = {   apple: '苹果',   orange: '橙子' } 

我写成 Enum:

enum FruitMap {   'apple' = '苹果',   'orange' = '橙子' } 

有时候我需要获取 Map 中的值,我会这样写:

const fruitName = FruitMap['apple']; // '苹果' 

我感觉用 Enum 替代 Map 似乎不太合适,Enum 应该不是这么用的对吧?

大佬有話說 (8)

  • 資深大佬 : avastms

    enum 的问题在于
    除了 FruitMap[‘apple’] === ‘苹果’,
    FruitMap[‘苹果’] 也 === ‘apple’,

    和对象以及 Map 还是有点不一样的

  • 資深大佬 : Vegetable

    啊当然不会,enum 的属性是只读的,不能改,只能读。
    这咋当 Map 用啊。

  • 資深大佬 : doommm

    @avastms 不对吧,当 enum 的 value 值是字符串的时候,FruitMap[‘苹果’] 这种写法是无效的,文档里有提到 https://www.typescriptlang.org/docs/handbook/enums.html#reverse-mappings

    “Keep in mind that string enum members do not get a reverse mapping generated at all.”

  • 資深大佬 : gucheen

    > Enums allow a developer to define a set of named constants. Using enums can make it easier to document intent, or create a set of distinct cases.

    官方文档一开始就说明了这个 Enum 的用途,其实就是一组具名常量。
    你通过 Enum 获取 value 是没问题的,但是把它当成 Map 或者 Object 用就不对了

  • 資深大佬 : luob

    type Fruit = “apple” | “orange”

    这种写法可能会更合适。

  • 資深大佬 : avastms

    @doommm 喔是真的,感谢了,原来这个问题是没有的,好魔幻

  • 資深大佬 : Jackeriss

    这跟语言无关吧,枚举和 map 是两种东西,有什么理由用枚举代替 map ?

  • 資深大佬 : kangyan

    完全不会…

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具