打字稿ENUM

时间:2020-01-14 04:37:56

标签: javascript typescript enums graphql

我有一些需要存储为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中。任何想法将不胜感激。

2 个答案:

答案 0 :(得分:0)

你可以做这样的事情吗?

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'

答案 1 :(得分:0)

实际上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"]);