当前位置:  开发笔记 > 编程语言 > 正文

打字稿中的字符串枚举

如何解决《打字稿中的字符串枚举》经验,为你挑选了1个好方法。

我想在typescript中有一组字符串枚举,所以我可以做一些事情,比如让用户从一组预定义的选项中进行选择.

我在这个答案中找到了一个很好的解决方案:如何在TypeScript中将字符串转换为枚举?

但是,这仅适用于单个单词...(基本上,上面允许您获取枚举名称值 - 并且不能在其中包含空格).

所以,进一步看,我发现这个人有一个解决方法:在typescript中基于字符串的枚举的解决方法

这将允许这样的事情工作:

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

唯一的回应基本上说这样做是不安全的.(但我应该说,它的工作-我可以输入事件类型. ......和Atom的编辑给我的5驼峰选项,从(保持事物的代码一致的选择),那么我可以用它来有字符串值吐出来给我的用户一个充满空间的体验,将来我可以更改枚举和不同的语言/选项措辞,而不会弄乱'代码'等等...

有一个更好的方法吗?我宁愿不"不安全" - 但我不知道其他任何方式.



1> Chandan Rai..:

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


这是如何让我"给我的开发人员提供不会导致将字符串硬编码到业务逻辑代码中的特定选项"?在OP解决方案中,可以将字符串"Photoshoot"更改为"Photo shoot"而无需任何其他编码更改(因为所有业务逻辑代码都指的是`EventType.Photoshoot`.似乎在此解决方案中,您需要如果你想把它改成"nerf",可以在商业代码中找到"North"的每一个用途.也许我错过了一些东西,但是......?(很高兴的字符串枚举正在讨论未来的打字稿)
推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有