gpt4 book ai didi

javascript - typescript如何实现枚举?

转载 作者:行者123 更新时间:2023-12-02 18:28:42 24 4
gpt4 key购买 nike

我想知道 typescript 如何将枚举编译成 JavaScript 代码。所以我实现了以下示例:

enum Contagens {
UM,
DOIS,
TRES
}

它被编译成这样:

"use strict";
var Contagens;
(function (Contagens) {
Contagens[Contagens["UM"] = 0] = "UM";
Contagens[Contagens["DOIS"] = 1] = "DOIS";
Contagens[Contagens["TRES"] = 2] = "TRES";
})(Contagens || (Contagens = {}));

但是,我不明白它是如何工作的......有人可以向我解释这段代码吗?

最佳答案

  1. 变量 var Contagens; 这将创建一个变量来保存对枚举的引用。

  2. 参数Contagens || (Contagens = {}) 如果枚举已存在,则使用该枚举;如果不存在,则将其设置为空对象。这允许扩展枚举:

enum Contagens {
UM,
DOIS,
TRES
}

enum Contagens {
CATRE = 4
}
  • 函数 function (Contagens) { 接受一个参数 Contagens,该参数是步骤 #2 中的值。在此函数中,它将在枚举对象上创建条目。它与外部变量 Contagens 具有相同的名称,因此它会隐藏该变量。但它的值是相同的,所以这并不重要。

  • 作业。

  • Contagens[Contagens["UM"] = 0] = "UM";

    赋值的结果就是被赋值的值。*因此,Contagens["UM"] = 0 做了两件事。它将键 "UM" 设置为值 0,并返回 0

    返回的 0 然后在第二个赋值中使用:

    Contagens[0] = "UM";

    现在,"UM" 属性已分配给 0,并且 0 属性已分配给 "UM".枚举现在看起来像这样:

    { UM: 0, "0": "UM" }

    这允许您通过名称查找枚举中的值,或从其值获取其名称。

    Contagens.UM // 0
    Contagens[0] // "UM"

    这很方便!


    * 当删除变量是未定义时的赋值结果,但分配对象的属性或分配给现有变量将返回分配的值。 JS 就是这么古怪。

    关于javascript - typescript如何实现枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69731112/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com