当前位置: 首页 > 知识库问答 >
问题:

typescript中的字符串枚举

沈飞翼
2023-03-14

因此,进一步寻找,我发现这个人有一个解决方案:typescript中基于字符串的枚举的解决方案

这将允许像这样的东西工作:

export enum EventType {
    Photoshoot = <any>"Photoshoot",
    BookingMeeting = <any>"Booking Meeting",
    PostShootMeeting = <any>"Post Shoot Meeting",
    Purchase = <any>"Purchase",
    Print = <any>"Print"
}

唯一的回应基本上是说这样做是不安全的。(但我应该说,它确实起作用了--我可以键入eventtype.dot...Atom editor给了我5个大小写选项可供选择(保持代码中的内容一致),然后我可以使用它将字符串值吐出来,给我的用户一个很好的填充空间的体验,将来我可以更改枚举和不同语言/选项的措辞,而不会完全扰乱“代码”,等等...

有没有更好的办法做到这一点?我不想“不安全地”做这件事--但我不知道有什么别的办法。

共有1个答案

东郭腾
2023-03-14

TypeScript枚举是基于数字的。您可以使用带有联合类型的字符串文本来模拟基于字符串的枚举,如下面的CardinalDirection示例所示。

type CardinalDirection =
    "North"
    | "East"
    | "South"
    | "West";

function move(distance: number, direction: CardinalDirection) {
    // ...
}

move(1,"North"); // Okay
move(1,"Nurth"); // Error!

以下是更多:https://basarat.gitbooks.io/typescript/content/docs/types/literal-types.html

字符串枚举位于即将发布的https://github.com/microsoft/typescript/issues/3192中

 类似资料:
  • 我在TypeScript中定义了以下枚举: 现在在我的函数中,我接收颜色作为字符串。我已经尝试了以下代码: 如何将该值转换为枚举?

  • 我是MVC编程的新手。所以我用的是play框架。 获取未捕获的引用Error:未定义MODERATED

  • 是否有任何方法使TypeScript枚举与JSON中的字符串兼容? 例如: 我想要是真的。或者更具体地说,我希望可以将值指定为字符串,而不是数字。 我知道我可以使用但这很麻烦,而且似乎会使枚举类型注释混淆和误导,从而破坏了它的用途。从技术上讲,JSON没有提供有效的枚举值,所以我不应该在枚举中键入属性。 所以我现在做的是使用带有静态常量的字符串类型: 这就得到了我想要的用法,但是类型注释太宽泛了,

  • 我想用Typescript写这样的东西: 并按如下方式使用: 它会返回的地方 上面的函数按预期工作…但是输入抛出错误。对于

  • 我正在尝试将Typecript枚举值转换为数字,以便在我的下拉列表中显示枚举字符串值,但在提交按钮上,传递的是该值而不是字符串。枚举设置如下。 到目前为止,我已经能够控制台.log对象的键(字符串)(例如 Value),但我想做的是在发出对象后传递 0(数字)值。 我该怎么做?

  • 问题内容: 有什么方法可以让TypeScript枚举与JSON中的字符串兼容? 例如: 我 想 是真的。更具体地说,我希望可以将值定义为 字符串 ,而不是数字。 我知道我可以使用,但这很麻烦,而且似乎使枚举类型注释变得混乱和误导,从而违背了它的目的。JSON从技术上讲 不会 提供有效的枚举值,因此我不应该在枚举中键入属性。 所以我目前正在做的是使用带有静态常量的字符串类型: 这为我提供了我想要的用