在ts中const和readonly区别?

server/2024/9/24 4:31:11/

在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.ppmy.cn/server/8466.html

相关文章

软考133-上午题-【软件工程】-软件项目估算

一、COCOMO 估算模型 COCOMO 模型是一种精确的、易于使用的成本估算模型。 COCOMO 模型按其详细程度分为:基本 COCOMO 模型、中级 COCOMO 模型和详细 COCOMO 模型。 1)基本 COCOMO 模型 基本 COCOMO 模型是一个静态单变量模型,用于对整个软…

MongoDB的安装使用

安装MongoDB(基于docker安装) docker run --restartalways -d --name mongo -v /opt/mongodb/data:/data/db -p 27017:27017 mongo:4.0.6MongoDB的客户端可以从这里下载(可能会404) https://www.mongodb.com/zh-cn/products/tool…

C# Promise对象详解

在C#中,异步编程是一个核心概念,尤其是在需要处理I/O密集型任务或与用户界面交互的应用程序中。C#提供了多种方法来处理异步操作,其中最值得注意的是async和await关键字,以及与之相关的Task和Promise对象。在本博客中,…

模块与包及json模块学习

【一】模块与包介绍 【1】什么是模块 在Python中,一个py文件其实就是一个模块 文件名 knight.py中 py就是模块名 【2】模块的优点 有了模块以后可以增加程序的可读性,提高开发效率 【3】模块的来源 (1)在Python解释器内部内…

Python网络爬虫项目开发实战:如何解决验证码处理

注意:本文的下载教程,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程:Python网络爬虫项目开发实战_验证码处理_编程案例解析实例详解课程教程.pdf 一、验证码处理的简介 在Python网络爬虫项目开发实战中,验证码处理是…

new[]与delete[]

(要理解之前关于new,delete的一些概念,看​​​​​​ CSDN) 引子: 相比new,new[]不仅仅是个数的增加,还有int大小记录空间的创建, 下图中错误的用模拟多个new来替代new[],释放步…

Linux中V4L2使用

Video for Linuxtwo(Video4Linux2)简称V4L2,是V4L的改进版。V4L2是linux操作系统下用于采集图片、视频和音频数据的API接口,配合适当的视频采集设备和相应的驱动程序,可以实现图片、视频、音频等的采集。在远程会议、可视电话、视频监控系统和…

Python数据分析与应用 |第4章 使用pandas进行数据预处理 (实训)

表1-1healthcare-dataset-stroke.xlsx 部分中风患者的基础信息和体检数据 编号性别高血压是否结婚工作类型居住类型体重指数吸烟史中风9046男否是私人城市36.6以前吸烟是51676女否是私营企业农村N/A从不吸烟是31112男否是私人农村32.5从不吸烟是60182女否是私人城市34.4抽烟是…