【问题标题】:Typescript ENUM's打字稿枚举
【发布时间】:2020-04-30 19:31:11
【问题描述】:

我有需要存储为 ENUM 的选项列表。问题是选项都是字母数字。

示例列表

 1.134/2394 x 3-xyz
 2.123/234 y 3-ery 
 3.345/99 t 4-red
 4.4.1hv 3 secondary
 5.2.51hv 3 secondary
 6.1.61hv 3 secondary

我们如何将其存储为 Typescript 中的选项。任何想法都将受到高度赞赏。

【问题讨论】:

  • 您使用的是什么版本的打字稿?你也可以有enum Season { Winter = "winter",}`这样的任务吗?
  • 不,我不喜欢这样赋值。

标签: javascript typescript enums graphql


【解决方案1】:

实际上enums 是javascript 对象。当您创建 enum 时,您可以选择访问该对象。

因此,如果您的密钥包含字母数字和空格,那么您无法在枚举名称之后使用 . 访问 - StatusCode.Ok 2 这将产生错误。

因此,对于您的情况,您需要使用您分配的号码或您分配的密钥来访问您的对象。这是你的选择。所以你可以像这样访问StatusCode['OK']

看看下面的例子。 Source

/*
enum StatusCodes {
  OK = 200,
    BadRequest = 400,
    Unauthorized,
    PaymentRequired,
    Forbidden,
    NotFound
};
*/

// The above enum is converted to the Javasscript object like this. 

var StatusCodes;
(function(StatusCodes) {
  StatusCodes[StatusCodes["OK"] = 200] = "OK";
  StatusCodes[StatusCodes["BadRequest"] = 400] = "BadRequest";
  StatusCodes[StatusCodes["Unauthorized"] = 401] = "Unauthorized";
  StatusCodes[StatusCodes["PaymentRequired"] = 402] = "PaymentRequired";
  StatusCodes[StatusCodes["Forbidden"] = 403] = "Forbidden";
  StatusCodes[StatusCodes["NotFound"] = 404] = "NotFound";
})(StatusCodes || (StatusCodes = {}));

// Ways to access the enum. 
console.log(StatusCodes.OK);
console.log(StatusCodes["OK"]);
console.log(StatusCodes["200"]);

【讨论】:

    【解决方案2】:

    你可以做这样的事情吗?

    enum x {
        '1.134/2394 x 3-xyz' = 2,
        '2.123/234 y 3-ery',
    }
    
    console.log(x['2.123/234 y 3-ery'])
    // this will print '3'
    

    【讨论】:

      猜你喜欢
      • 2017-05-09
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 2020-01-29
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多