在ts中const和readonly区别?

简介: 在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用于确保对象的特定属性不变。

相关文章
|
JavaScript 开发者
TypeScript中的接口定义与实现详解
【4月更文挑战第23天】TypeScript的接口用于定义对象形状,确保一致性。接口可描述属性和方法,促进代码组织和可维护性。本文涵盖接口基本定义、实现、可选和只读属性、接口继承及与类型别名的区别。通过接口,开发者能更好地控制代码结构,提高可读性和可维护性。
|
存储 开发框架 安全
如何处理预防XSS漏洞攻击问题
防止XSS攻击需要从多个方面入手,包括输入验证和过滤、输出编码、设置正确的HTTP头部、使用最新的安全框架和库、定期进行安全审计和漏洞扫描以及培训和意识提升等。只有综合运用这些措施,才能有效地防止XSS攻击,保护网站和用户的安全。
|
安全 Java Android开发
SpringBoot 代码混淆方案 ProGuard
在软件开发中,代码混淆是故意创建人类难以理解的源代码或机器代码的行为。代码混淆处理修改了可部署的文件,因此黑客很难从中读取信息,但仍然保持完整的功能。这最初是为 android 平台引入的。它现在能够支持 SpringBoot 2。
|
4月前
|
安全 Java 数据库
Jasypt加密数据库配置信息
本文介绍了使用 Jasypt 对配置文件中的公网数据库认证信息进行加密的方法,以提升系统安全性。主要内容包括:1. 背景介绍;2. 前期准备,如依赖导入及版本选择;3. 生成密钥并实现加解密测试;4. 在配置文件中应用加密后的密码,并通过测试接口验证解密结果。确保密码安全的同时,保障系统的正常运行。
296 3
Jasypt加密数据库配置信息
|
12月前
vue3 + Ts 中 使用 class 封装 axios
【10月更文挑战第5天】
484 1
|
前端开发 JavaScript
|
Java Linux Maven
Maven 仓库
Maven仓库管理依赖,包括本地、中央和远程仓库。本地仓库在首次运行时创建,默认位于用户目录的`.m2/repository`。若本地缺少构件,Maven会从远程仓库下载,中央仓库是默认的远程源,包含大量开源Java构件。中央仓库无需配置,可通过HTTP访问,[search.maven.org](http://search.maven.org/#browse)可浏览其内容。
|
编解码 数据可视化 小程序
微信小游戏开发(第一篇
微信小游戏开发(第一篇
602 0
|
前端开发
深入理解 React 中的 Context(二)useContext、createContext
深入理解 React 中的 Context(二)useContext、createContext
540 0