使用字符串值创建枚举

新手上路,请多包涵

以下代码可用于在 TypeScript 中创建 enum

 enum e {
    hello = 1,
    world = 2
};

并且可以通过以下方式访问这些值:

 e.hello;
e.world;

如何使用字符串值创建 enum

 enum e {
    hello = "hello", // error: cannot convert string to e
    world = "world"  // error
};

原文由 FacePalm 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 541
2 个回答

打字稿 2.4

现在有字符串枚举,所以你的代码可以正常工作:

 enum E {
    hello = "hello",
    world = "world"
};

🌹

打字稿 1.8

从 TypeScript 1.8 开始,您可以使用字符串文字类型来为命名字符串值(这部分是枚举的用途)提供可靠和安全的体验。

 type Options = "hello" | "world";
var foo: Options;
foo = "hello"; // Okay
foo = "asdf"; // Error!

更多: https ://www.typescriptlang.org/docs/handbook/advanced-types.html#string-literal-types

旧版支持

TypeScript 中的枚举是基于数字的。

您可以使用具有静态成员的类:

 class E
{
    static hello = "hello";
    static world = "world";
}

你也可以简单地说:

 var E = {
    hello: "hello",
    world: "world"
}

更新: 基于能够执行类似 var test:E = E.hello; 的要求,以下满足此要求:

 class E
{
    // boilerplate
    constructor(public value:string){
    }

    toString(){
        return this.value;
    }

    // values
    static hello = new E("hello");
    static world = new E("world");
}

// Sample usage:
var first:E = E.hello;
var second:E = E.world;
var third:E = E.hello;

console.log("First value is: "+ first);
console.log(first===third);

原文由 basarat 发布,翻译遵循 CC BY-SA 3.0 许可协议

Typescript 中的字符串枚举:

字符串枚举是一个类似的概念,但有一些细微的运行时差异,如下所述。在字符串枚举中,每个成员都必须使用字符串文字或另一个字符串枚举成员进行常量初始化。

 enum Direction {
  Up = "UP",
  Down = "DOWN",
  Left = "LEFT",
  Right = "RIGHT",
}

虽然字符串枚举没有自动递增的行为,但字符串枚举的好处是它们可以很好地“序列化”。换句话说,如果您正在调试并且必须读取数字枚举的运行时值,则该值通常是不透明的 - 它本身并不能传达任何有用的含义(尽管反向映射通常可以提供帮助),字符串枚举允许您在代码运行时提供有意义且可读的值,与枚举成员本身的名称无关。参考链接如下。

在此处输入链接描述

原文由 Muhammad Awais 发布,翻译遵循 CC BY-SA 4.0 许可协议

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