【问题标题】:How does typescript enum trans-compilation function create 2 keyvalue pairs at once?typescript enum trans-compilation 函数如何一次创建 2 个键值对?
【发布时间】:2016-04-16 15:01:51
【问题描述】:

在打字稿中:

http://www.typescriptlang.org/Playground

enum Role {Employee = 3, Manager =5, Admin = 7}
console.log('Roles:', Role[3])

转译成:

var Role;
(function (Role) {
    Role[Role["Employee"] = 3] = "Employee";
    Role[Role["Manager"] = 5] = "Manager";
    Role[Role["Admin"] = 7] = "Admin";
})(Role || (Role = {}));
console.log('Roles:', Role[3]);

我就是不明白这个功能是如何工作的。

1.如何一次创建 2 个键:值对,请查看此处:

2。为什么作用域传入(Role || (Role = {})?

【问题讨论】:

    标签: javascript object enums typescript key-value


    【解决方案1】:

    如何一次创建 2 个键:值对,请查看此处:

    让我们开始吧:

    Role[Role["Employee"] = 3] = "Employee";
    

    首先我们得到:

    Role["Employee"] = 3
    

    然后我们得到

    Role[3] = "Employee";
    

    其中3 是表达式Role["Employee"] = 3 的结果

    所以您可以使用枚举将数字转换为字符串或将字符串转换为数字

    为什么作用域会传入(Role || (Role = {})?

    它允许您将枚举定义拆分到多个 TypeScript 文件中。

    更多

    书中的一整节:https://basarat.gitbooks.io/typescript/content/docs/enums.html?

    【讨论】:

      【解决方案2】:

      评估时:

      Role[Role["Employee"] = 3] = "Employee";
      

      内部:

      Role["Employee"] = 3
      

      Role.Employee 设置为3,但此赋值也返回值3。因此,在评估分配后,您实际上只剩下:

      Role[3] = "Employee";
      

      有关详细信息,请参阅赋值运算符specs

      在结尾处(Role || (Role = {}),计算结果为{}。这保证了传递给函数的对象Role 不是null,无论出于何种原因。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-27
        • 2019-03-30
        • 1970-01-01
        • 1970-01-01
        • 2018-09-08
        • 2019-01-01
        • 2021-04-02
        • 2022-12-12
        相关资源
        最近更新 更多