当前位置: 首页 > news >正文

TypeScript 中 const enum 和 enum 的核心区别在哪?日常开发应该使用哪个?

编译结果

enum 会生成一个对象,引用的地方保持对其引用
const enum 会擦除 enum 定义的代码,引用的地方会生成 inline code

使用enum

image.png

使用const enum

image.png

PS:编译选项 preserveConstEnums 可以使 const enum 不去擦除 enum 定义的代码,而是保持与 enum 同样的编译结果,不过引用的地方还是 inline code。

性能

enum 因为保持了引用,故性能会比编译为 inline code 的 const enum 差一点,但这个差异是微乎其微的。

特性差异

大部分场景没有什么差异。不过因为 enum 会生成对象,故能够进行对象相关的操作,比如:

enum Foo {A,B
}const keys = Object.keys(Foo);for (const value in Foo) {console.log(value);
}

而 const enum 则会报错:

'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment or type query.

总结

区别可以参考官方文档
平时尽量使用 const enum 可以获得一点性能增益

相关文章:

  • MySQL实训项目——餐饮点餐系统
  • HarmonyOS--开发者证书考试地址
  • 顾客满意度调查指标如何设计
  • Asp.net Core 反射加载dll
  • 在C++中,工厂模式的思考(《C++20设计模式》及常规设计模式对比)
  • Word中输入文字时,后面的文字消失
  • 如何在OpenEuler 上快速部署一套Zabbix7.0监控系统
  • 性能测试方法与工具比较
  • 云计算 | 期末梳理(上)
  • 零知识证明技术:隐私保护的利器
  • 【原创教程】一次搞定伺服原点问题(进阶篇)
  • 【图片知识】现在各种平台为什么开始使用 webp格式的图片 而不是传统的jpg或者png
  • python 笔试面试八股(自用版~)
  • git基本使用(二):git分支的操作命令
  • 【PYG】Cora数据集分析argmax(dim=1)输出
  • 【笔记】你不知道的JS读书笔记——Promise
  • Centos6.8 使用rpm安装mysql5.7
  • docker-consul
  • Linux中的硬链接与软链接
  • sessionStorage和localStorage
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • 对JS继承的一点思考
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 给初学者:JavaScript 中数组操作注意点
  • 坑!为什么View.startAnimation不起作用?
  • 手写一个CommonJS打包工具(一)
  • 小程序开发中的那些坑
  • 一起参Ember.js讨论、问答社区。
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #数据结构 笔记一
  • (02)Hive SQL编译成MapReduce任务的过程
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (C++17) std算法之执行策略 execution
  • (day6) 319. 灯泡开关
  • (分类)KNN算法- 参数调优
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (七)Knockout 创建自定义绑定
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)setTimeout 和 setInterval 的区别
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • 、写入Shellcode到注册表上线
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET企业级应用架构设计系列之应用服务器
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .Net组件程序设计之线程、并发管理(一)
  • @AliasFor 使用
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429