TS中enum调用Object.values方法

TS中使用Object.values,传入enum类型

enum TestEnum {
    aaa = {name: 111},
    bbb = {name: 222},
    ccc = {name: 333},
}

console.log(Object.values(TestEnum));

得到的打印是

[
    {
        "name": 111
    },
    "ccc",
    {
        "name": 222
    },
    {
        "name": 333
    }
]

为什么会多出一个'ccc'

阅读 3.7k
2 个回答
enum TestEnum {
    aaa = {name: 111},
    bbb = {name: 222},
    ccc = {name: 333},
}

的编译结果是

"use strict";
var TestEnum;
(function (TestEnum) {
    TestEnum[TestEnum["aaa"] = { name: 111 }] = "aaa";
    TestEnum[TestEnum["bbb"] = { name: 222 }] = "bbb";
    TestEnum[TestEnum["ccc"] = { name: 333 }] = "ccc";
})(TestEnum || (TestEnum = {}));

TestEnum的值会是

{"aaa":{"name":111},"[object Object]":"ccc","bbb":{"name":222},"ccc":{"name":333}}

因为TestEnum["aaa"] = { name: 111 }/TestEnum["bbb"] = { name: 222 }/TestEnum["ccc"] = { name: 333 }的结果都是一个object,做对象key时会被转成[object Object],然后被覆盖,最终值为ccc

https://www.typescriptlang.or...

enum 只允許 數字 跟 文字 你從根本上就語法錯誤了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题