在ts中const和readonly区别?

在TypeScript中,constreadonly是两种不同的属性修饰符,它们各自有特定的用途和语义。

const关键字在TypeScript中用于声明常量,即一个值在初始化后不能再被改变的变量。这意味着一旦你为一个const变量赋值,你就不能再次为它赋一个新的值。这是TypeScript(以及JavaScript)中的基本特性,用于确保某些值在程序的整个生命周期中保持不变。

例如:

 

typescript复制代码

const PI = 3.14159;
// PI = 3.14; // 这会报错,因为PI是一个常量

readonly是TypeScript中的一个类型级别的修饰符,它用于对象的属性上,表示这个属性是只读的,即它的值在对象被创建后不能被改变。但是,这并不意味着包含只读属性的对象本身不能被重新赋值。这与const不同,const`是变量级别的修饰符,它确保变量的引用不能被改变。

例如:

 

typescript复制代码

interface Person {
readonly name: string;
age: number;
}
let person: Person = {
name: "Alice",
age: 25
};
// person.name = "Bob"; // 这会报错,因为name是只读的
person.age = 26; // 这是可以的,因为age不是只读的
person = { // 这是可以的,因为person变量本身不是const
name: "Bob",
age: 30
};

在这个例子中,Person接口有一个只读属性name和一个非只读属性age。我们创建了一个Person类型的变量person,并尝试改变其name属性,但TypeScript编译器会报错,因为name是只读的。然而,我们可以改变age属性的值,也可以重新为person变量赋值一个新的Person对象。

总的来说,constreadonly在TypeScript中各有其用,它们的主要区别在于const用于确保变量的引用不变,而readonly用于确保对象的特定属性不变。

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

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

相关文章

Java反序列化-CC3链

前言 前面的CC1与CC6链都是通过 Runtime.exec() 进行命令执行的。当服务器的代码将 Runtime放入黑名单的时候就不能使用了。 CC3链的好处是通过动态加载类的机制实现恶意类代码执行。 版本限制 jdk8u65Commons-Collections 3.2.1 动态类加载 loadClass -> 负责加载load…

【数据结构】队列的使用方法

队列(Queue)是另一种基本的线性数据结构,它允许在一端进行插入操作,而在另一端进行删除操作。队列的特点是先进先出(First In First Out, FIFO),即最先进入队列的元素最先被取出。 队列可以用数…

38. UE5 RPG 修改火球术的攻击方向以及按住Shift攻击

在前面,我们实现了火球术火球的制作,能够在释放火球术时,角色将播放释放技能动画,并实现了对火球的目标的服务器同步功能。 我们先回忆一下之前完成的内容。 在前面,我们先做了一个Actor,用于承载发射的火…

集成学习-Bagging与随机森林回归

reg_fRFR() reg_tDTR()#实例化决策树 cvKFold(n_splits5,shuffleTrue,random_state1412)#实例化验证方式 result_tcross_validate(reg_t#要进行交叉验证的评估器,X,y,cvcv,scoringneg_mean_squared_error#评估指标,return_train_scoreTrue#是否返回训练分数,后面这几…

高可用环境kafka消息未按顺序消费问题

目录 1、背景 2、问题排查 3、问题解决 1、背景 质检任务是异步执行,正常情况下任务状态扭转是 等待中》运行中》成功(失败)。在质量平台生成任务实例,此时状态是等待中,生成实例之后把具体的任务sql给到大数据平…

Git 原理及使用 (带动图演示)

文章目录 🌈 Ⅰ Git 安装🌙 01. Linux - centos 🌈 Ⅱ Git 工作区、暂存区和版本库🌙 01. 认识工作区、暂存区和版本库🌙 02. 使用 Git 管理工作区的文件 🌈 Ⅲ Git 基本操作🌙 01. 创建本地仓库…

动态Web项目讲解+Demo

web流程演示 请求路径 请求路径明确要请求的是哪个servlet 请求方式 servlet含有两种请求方式:doGet和doPost doGet&doPost 返回数据就是httpResponse,返回给success 参数 包含在request当中 成功 上述流程任何一步都没出问题,就会…

SpringBoot+layuimini实现左侧菜单动态展示

layuimini左侧菜单动态显示 首先我们看一下layuimini的原有菜单显示格式 {"homeInfo": {"title": "首页","href": "page/welcome-2.html?t2"},"logoInfo": {"title": "LAYUI MINI","…

Thinkphp5+mysql批量筛选varchar字段默认值为null的数据

荆轲刺秦王 sql server数据库转mysql之后,遇到: CREATE TABLE q_bk_date (daid int(11) NOT NULL AUTO_INCREMENT,partno varchar(200) CHARACTER SET utf8 NOT NULL DEFAULT ,Bdate date DEFAULT NULL,bkno varchar(25) CHARACTER SET utf8 NOT NULL DEFAULT ,bvar varchar(…

ts中函数形状有几种定义方式

在TypeScript(TS)中,函数形状(即函数的类型)可以通过多种方式定义。以下是一些主要的定义方式: 类型别名定义函数形状: 使用 type 关键字为函数定义类型别名。 type MyFunction (a: number, …

cv2技术原理-图像旋转原理及手动实现

cv2技术原理-图像旋转原理及手动实现 1、图像旋转opencv实现2、cv2.getRotationMatrix2D函数解释3、数学原理推导旋转矩阵M4、手动计算旋转矩阵M5、旋转矩阵M的使用6、使用旋转矩阵M手动实现旋转功能 1、图像旋转opencv实现 图像旋转在对数据集数据增强(主要是随机…

Java语言——封装

一.封装的定义 在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问…

C++ //练习 12.31 如果用vector代替set保存行号,会有什么差别?哪种方法更好?为什么?

C Primer(第5版) 练习 12.31 练习 12.31 如果用vector代替set保存行号,会有什么差别?哪种方法更好?为什么? 环境:Linux Ubuntu(云服务器) 工具:vim 解释 …

车机电源管理设计

电源电压 汽车正常电压是12 V,但整车厂会要求在9V~16V这个范围内所有零部件必须能够正常工作。 在启动时,电池电压会突降,特别天气寒冷的时候,电压可能会瞬间降到6V左右。 当汽车电池严重亏电而无法启动时,可能会用…

linux|将用户加入白名单

一 用root用户找到etc\sudoers文件 cd etc 二 修改etc\sudoers 文件的权限 默认是只读的 修改为可写的 chmod uw sudoers 三 打开 sudoers文件,在Allow root to run any commands anywhere 后面 添加一条(把上面的一条内容复制下来 修改用户名即…

什么是程控电源?以及程控电源的工作原理与应用。

一、程控电源的简介: 程控电源是一种具有编程功能的电源设备,它可以通过外部控制来设定输出电压、电流的稳压、稳流或稳压/稳流模式,因此可以进行电压、电流、相位、频率、功率等参数的试验和检定。一些具体的产品特性包括微机控制、高精度、…

python实现假设检验-t检验

一. 什么是t检验 设总体 X ∼ N ( μ , δ 2 ) X\sim N(\mu,\delta^2) X∼N(μ,δ2),其中 μ , δ 2 \mu, \delta^2 μ,δ2未知,统计量 t X ‾ − μ S / n t \frac{\overline{X} - \mu}{S/\sqrt{n}} tS/n ​X−μ​服从标准正太分布,可以…

表达式求值(后缀表达式)(数据结构)

一、概念 算术表达式是由操作数(运算数)、运算符(操作符)、和界线符(括号)三部分组成,在计算机中进行算术表达式的计算是通过堆栈来实现的。 二后缀表达式的逻辑和实现方式(逆波兰…

电商平台数据有哪些?如何进行电商平台数据分析?(内附模板及工具)

在电商日常的贩卖工作中会产生大量的数据,如果你还不知道如何利用这些宝贵的数据指导未来的销售策略、增长销售额的话,就和我一起看下去吧!电商数据采集API接口包含哪些数据? 电商平台数据可以大致分为以下几个组成部分&#xff…

C#:直接调用 OpenFileDialog

C# 直接调用 OpenFileDialog,打开文件夹,选择视频文件,并播放。 编写 openvideo.cs 如下 // open a video file using System; using System.Diagnostics; using System.Windows.Forms;public class OpenVideoFile {[STAThread]public st…