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 可以获得一点性能增益

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/39543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPDRRC信息安全体系架构模型

构建信息安全保障体系框架应包括技术体系、组织机构体系和管理体系等三部分,也就是说:人、管理和技术手段是信息安全架构设计的三大要素,而构成动态的信息与网络安全保障体系框架是实现系统的安全保障。 1.WPDRRC信息安全模型的定义 WPDRRC…

大模型日报 2024-07-02

大模型日报 2024-07-02 大模型资讯 Gemma 2 模型以 27B 的参数击败 70B 的 Llama 3-Instruct,成为开源模型性能第一,在 LMSYS Chatbot Arena 排行表现出色,但微调数据来源引争议。 🔗:http://www.jintiankansha.me/t/g…

Vue3快速上手--3小时掌握

1. Vue3简介 2020年9月18日,Vue.js发布版3.0版本,代号:One Piece(n经历了:4800次提交、40个RFC、600次PR、300贡献者官方发版地址:Release v3.0.0 One Piece vuejs/core截止2023年10月,最新的…

llama-factory训练RLHF-PPO模型

理论上RLHF(强化学习)效果比sft好,也更难训练。ppo有采用阶段,步骤比较多,训练速度很慢. 记录下工作中使用llama-factory调试rlhf-ppo算法流程及参数配置,希望对大家有所帮助. llama-factory版本: 0.8.2 一 rlhf流程 ppo训练流程图如下, 会…

【Kubernetes】加入节点Node及问题

命令 分别再node节点机器上,执行如下命令: kubeadm join [master机器ip:端口] --token [master机器初始化生成的token] --discovery-token-ca-cent-hash [master机器初始化生成的hash]问题 由于清屏没有记住token和hash的时候: 1&#xff…

Log4j日志框架讲解(全面,详细)

Log4j概述 Log4j是Apache下的一款开源的日志框架,通过在项目中使用 Log4J,我们可以控制日志信息输出到控制台、文件、甚至是数据库中。我们可以控制每一条日志的输出格式,通过定义日志的输出级别,可以 更灵活的控制日志的输出过程…

如何指定Microsoft Print To PDF的输出路径

在上一篇文章中,介绍了三种将文件转换为PDF的方式。默认情况下,在Microsoft Print To PDF的首选项里,是看不到输出路径的设置的。 需要一点小小的手段。 运行输入 control 打开控制面板,选择硬件和声音下的查看设备和打印机 找到…

【ubuntu18.04】 局域网唤醒 wakeonlan

ai服务器经常因为断电,无法重启,当然可以设置bios 来电启动。 这里使用局域网唤醒配置。 自动开关机设置 工具:ethtool 端口 : enp4s0 Wake-on: d 表示禁用Wake-on: g 激活 ,例如:ethtool -s eth0 wol g 配置/etc/rc.local ,这个文件不存在,自己创建工具下载 tengxun W…

【前端vue3】TypeScrip-类型推论和类型别名

类型推论 TypeScript里,在有些没有明确指出类型的地方,类型推论会帮助提供类型。 例如: 变量xiaoc被推断类型为string 如重新给xiaoc赋值数字会报错 let xiaoc "xiaoc"xiaoc 1111111111111如没有给变量指定类型和赋值&#xf…

专题七:Spring源码之BeanDefinition

上一篇我们通过refresh方法中的第二个核心方法obtainBeanFactory,通过createBeanFacotry创建容Spring的初级容器,并定义了容器的两个核心参数是否允许循环引用和覆盖。现在容器有了,我们来看看容器里的第一个重要成员BeanDefinition。 进入lo…

浙大版PTA《Python 程序设计》题目集 参考答案

浙大版PTA《Python 程序设计》题目集 参考答案 本答案配套详解教程专栏,欢迎订阅: PTA浙大版《Python 程序设计》题目集 详解教程_少侠PSY的博客-CSDN博客 01第1章-1 从键盘输入两个数,求它们的和并输出 aint(input()) # 输入a的值 bint(…

从需求是如何最终抽象成最基本的传参入参

第一层:出参和入参 用通俗的话讲,就是给客户提供服务的一种方式,需要包含入参和出参 。入口参数就是程序执行时会调用的参数,出口参数就是程序执行完会返回的参数。入参的值是被调函数需要, 出参的值是主调函数需要的…

【文件上传】

文件上传漏洞 FileUpload 0x01 定义 服务端未对客户端上传文件进行严格的 验证和过滤造成可上传任意文件情况;0x02 攻击满足条件: 1. 上传文件能够被Web容器解释执行   2. 找到文件位置   3.上传文件未被改变内容。(躲避安全检查&#…

【Linux系统】CUDA的安装与graspnet环境配置遇到的问题

今天在安装环境时遇到报错: The detected CUDA version (10.1) mismatches the version that was used to compile PyTorch (11.8). Please make sure to use the same CUDA versions. 报错原因:安装的cuda版本不对应,我需要安装cuda的版本…

Spark面试题总结

一、RDD的五大特性是什么 1、RDD是由一些分区构成的,读取文件时有多少个block块,RDD中就会有多少个分区 2、算子实际上是作用在RDD中的分区上的,一个分区是由一个task处理,有多少个分区,总共就有多少个task 3、RDD之间…

windows远程连接无法复制文件

windows远程桌面无法复制文件 解决方案 打开任务管理器管理器,在详细信息界面,找到rdpclip.exe进程,选中并点击结束任务,杀死该进程。 快捷键 win r 打开运行界面,输入 rdpclip.exe ,点击确定运行。即可解决无法复制文件问题。…

WebDriver 类的常用属性和方法

目录 🎍简介 🎊WebDriver 核心概念 🎉WebDriver 常用属性 🎁WebDriver 常用方法 🐷示例代码 🎪注意事项 🎐结语 🧣参考资料 🎍简介 Selenium WebDriver 是一个用…

产品设计的8大步骤

产品设计,通俗来说就是将创新想法或概念转化为落地实体的过程。一般来说,一个成功的产品应当具有创新性、美观性、实用性、可持续性以及经济效益,从而满足用户的使用需求以及市场的发展需求。产品设计也并不是一件简单的事情,产品…

Docker与微服务实战2022 尚

Docker与微服务实战2022 尚硅谷讲师:周阳 1. 基础篇(零基小白) 1 1.1. Docker简介 2 1.2. Docker安装 15 1.3. Docker常用命令 29 1.4. Docker镜像 43 1.5. 本地镜像发布到阿里云 50 1.6. 本地镜像发布到私有库 57 1.7. Docker容器数据卷 64 1.8. Docker常规安装简介 …

firewalld开放端口常用命令

在Linux系统中,常使用firewalld服务来管理防火墙,可以通过命令行来开放特定的端口。 查firewalld运行状态: sudo systemctl status firewalld 确保firewalld正在运行,可以使用以下命令来启动并使其在系统启动时自动运行&#xff1…