记一个TS 枚举顺序的坑

项目中有如下枚举,其中待修改是后增的,然后在调试中发现,【待修改】<【待发送】,这个没问题。

但是之前的逻辑却是反着的,【待填写】/【待跟进】>【待发送】

export enum WorkflowStatus {
WaitFill = "待填写",
WaitEdit = "待修改",
WaitFollow  = "待跟进",
WaitSend = "待发送",
Making = "制作中",
Finish = "已生成",
Deleted = "已取消",
}

 

这一下子给我整蒙了,第一反应看下linecommit,一年前,原来锅不在我。

然后继续查看,发现官方解释如下:enum 是一种枚举类型,它定义了一组命名的常量。虽然枚举成员本身并不直接存储顺序信息(它们主要是键值对),但 TypeScript 会为它们分配一个默认的顺序值,从 0 开始递增,除非显式指定了值。

这里显然是英文值替代了指定值,那么实际排序是怎么排的呢?

继续查阅文档,发现直接用值比较时,是使用对应的Unicode 编码,第一个字相同时会继续比较第二个字。

打开在线Unicode ,【待填写】\u5f85\u586b\u5199,【待修改】 \u5f85\u4fee\u6539,【待跟进】 \u5f85\u8ddf\u8fdb,【待发送】\u5f85\u53d1\u9001   所以【待填写】/【待跟进】>【待发送】,但是【待修改】<【待发送】

 

posted @ 2024-11-20 17:33  汜水渟  阅读(0)  评论(0编辑  收藏  举报