

























这是一个创建于 443 天前的主题,其中的信息可能已经有所发展或是发生改变。
比如:
type InputType = 'text' | 'number'
let e: InputType | undefined = 'text'
const getHtmlStr = (t: InputType | undefined) => `${t === 'text' ? 'type=text' : '...'}`
我给枚举来个重命名吧,把 'text' 改成 'text2',下面用到的地方全都没有改过来,要手动改。
1 xuld 2025 年 3 月 29 日使用“枚举”还是“字符串联合类型”,关键看目的是强调类型还是强调值。 1. 枚举需要记忆枚举的名字,不需要记忆具体有哪些项(因为可以点出来 至于你说的重命名没有自动改过来,这只是实现的一个差异,未来可能会被抹平,但不应该为了这点差异而影响用谁的决策 |
2 AV1 2025 年 3 月 29 日用 object as const 。 还有最新的 TS 5.8 推出了 erasableSyntaxOnly 开关,会禁用 enmu 语法,我觉得淘汰 enum 可能是大势所趋了。 |
3 june4 2025 年 3 月 29 日@xuld 枚举也不用记名字啊,vscode 参数补全可以弹出来枚举名字并在第一位,用起来和字符串没多大差别。而字符串到处传来传去心里不踏实,总得会丢掉枚举的类型约束,肉眼也看不出来。 |
4 june4 2025 年 3 月 29 日@DOLLOR enum 要废弃确实有点不爽,ts 应该把 enum 关键字和 object as const 来个缝合,把 enum 当成 object as const 的纯语法糖而不是生成新结构。 |
5 nowtg 2025 年 3 月 29 日 via iPhone字符串改起来费劲。用枚举和对象都行吧 |
6 june4 2025 年 3 月 29 日@liuw666 可是对象不受 ts 特殊加持对待,没有枚举完美。比如 你要用到 Direction 类型的时候,补全不象 enum 一样让你知道这里要填个 Direction.xxx ,而是直接是字符串 'up', 'down'之类的,很容易让人误用。 |
7 jsq2627 2025 年 3 月 29 日感觉大多数开源库倾向用字符串 |
10 chenliangngng 2025 年 3 月 29 日我也有这个疑问,ts 对对象字面量和枚举支持不好,很难用,虽然 enum 不符合 ts 的初衷,但是转换成对象确实可以解决枚举的问题,否则所有枚举的地方都要声明两次 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。