返回顶部
首页 > 资讯 > 前端开发 > JavaScript >简单聊聊TypeScript只读修饰符
  • 745
分享到

简单聊聊TypeScript只读修饰符

2024-04-02 19:04:59 745人浏览 独家记忆
摘要

目录前言只读函数参数如何更改函数只读类属性只读索引总结前言 在typescript 2.0中,引入了readonly关键字,可以对类中的属性进行修饰,作用是:该属性被readonly

前言

typescript 2.0中,引入了readonly关键字,可以对类中的属性进行修饰,作用是:该属性被readonly修饰之后无法修改**(如需修改,在构造函数中可以对只读属性进行修改)**。

我们可以直接在interfacetype中直接使用readonly。

我们来看一个简单的例子:我们定义一个User type

type User={
   readonly  name : string;
   readonly  age  : number
}

我们可以创建一个user,并且初始化一个具体的值。

let user:User={
    name:'搞前端的半夏',
    age:18
}

如果我们去修改age的值,编译器会直接报错。

user.age=19

只读函数参数

js中,我们会经常使用const来定义变量,但是const无法保证Object内部的属性不被改变。还是上面的User type,

我们有一个函数接受User type的参数。我们在函数内部修改age属性,编译直接出错。

这样的好处是:我们可以确定这里定义的全局user,无法被改变

let user:User={
    name:'搞前端的半夏',
    age:18
}
UserInfo(user)
function UserInfo(user:User){
    user.age=19
    console.log(user.name,user.age)
}

如何更改函数

只读类属性

readonly修饰符还可以应用在类中声明的属性。这里我们创建了一个User类,具有只读的name和age,请注意这里的name和age是没有初始值的。

class User {
    readonly name: string;
    readonly age: number;
    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }
    UserInfo(user:User){
        console.log(user.name,user.age)
    }
}

我们创建一个user实体,使用new方法创建对象的同时,给name和age添加默认值,由此可以得出结论

在类的constructor中,我们可以修改只读属性的值

name和age是只读的,我们可以获取具体的值。

let user =new User('搞前端的半夏',18)

console.log(user.name)
console.log(user.age)

但是,如果尝试修改name和age的值,会编译出错。

我们尝试在UserInfo中修改name和age:

   UserInfo(user:User){
        this.age=20
        console.log(user.name,user.age)
    }

可以看到,编译仍然是错误的!我们可以得出结论

在类中的普通方法 无法 修改 被readonly的属性

只读索引

可以使用readonly来标记索引。例如下面的ReadonlyArray,可以有效的防止给具体的索引分配具体的值。

interface ReadonlyArray<T> {
  readonly length: number;
  // ...
  readonly [n: number]: T;
}

因为是只读的索引,所以下面的赋值操作,会编译出错。

const readonlyArray: ReadonlyArray<number> = [2, 3, 5, 7];
readonlyArray[4] = 11;

总结

readonly是TS类型系统的一部分,它只是一个编译时的工具,TypeScript 代码被编译为 javascript,所有的readonly都消失了。所以在运行时没有任何针对属性只读的保护。TS是通过编译器来检查并帮助你编写正确的代码。

例如下面的示例,即使我们的编译器提示有错误,TS仍然可以编译成对应的JS代码,这也完全说明TS只是在编译的阶段,引导我们规范正确的编码

到此这篇关于TypeScript只读修饰符的文章就介绍到这了,更多相关TS只读修饰符内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 简单聊聊TypeScript只读修饰符

本文链接: https://lsjlt.com/news/145146.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 简单聊聊TypeScript只读修饰符
    目录前言只读函数参数如何更改函数只读类属性只读索引总结前言 在Typescript 2.0中,引入了readonly关键字,可以对类中的属性进行修饰,作用是:该属性被readonly...
    99+
    2024-04-02
  • 简单聊聊Python中的wraps修饰
    在了解wraps修饰器之前,我们首先要了解partial和update_wrapper这两个函数,因为在wraps的代码中,用到了这两个函数。 partial 首先说partial函数,在官方文档的描述中,这个函数的声明如下:...
    99+
    2023-01-31
    简单 Python wraps
  • TypeScript只读修饰符怎么用
    这篇文章主要介绍“TypeScript只读修饰符怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“TypeScript只读修饰符怎么用”文章能帮助大家解决问题。前言在Typescript 2.0中...
    99+
    2023-06-29
  • 聊聊Java中的Native修饰符
    目录Native修饰符的使用native主要用于方法上说明举例Native修饰的方法到底有什么用处什么是NativeMethod为什么要使用NativeMethodJVM怎样使Nat...
    99+
    2024-04-02
  • 聊聊PHP中Public修饰符的使用方法
    PHP是一种非常流行的编程语言,被广泛应用于Web开发和服务器脚本编写。作为一种面向对象编程语言,PHP中存在许多访问修饰符,其中public是最常见的一种。public修饰符指定的成员变量或者成员函数可以被这个类的任意对象访问。类中的成员...
    99+
    2023-05-14
  • 简单聊聊Java程序中的换行符
    目录常见的换行符\r\n和\n的区别换行符的解析小结常见的换行符 Java程序中的换行符一般使用“\n”表示,它是一个转义字符,表示换行符。根据操作系统的不同...
    99+
    2023-03-21
    Java 换行符使用 Java换行符
  • 简单聊聊C#字符串构建利器StringBuilder
    目录前言简单示例源码探究构造入手无参构造带参数的构造构造小结核心方法转换成字符串对比java实现总结前言 在日常的开发中StringBuilder大家肯定都有用过,甚至用的很多。毕竟...
    99+
    2024-04-02
  • PHP正则表达式修饰符的简单介绍
    本篇内容介绍了“PHP正则表达式修饰符的简单介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我们在PHP正则表达式的学习中会碰到修饰符,那...
    99+
    2023-06-17
  • 原来微信被删除后仍可以继续聊天,只要这样简单操作就可以了
    微信做为大家最常用的一种社交工具,对于一些常用功能大家肯定都有所了解,但是大家最不喜微信的一处功能就是会在不接受任何通知时,被微信好友删除。 那么如果被微信好友删除后,如何才能继续聊天呢?这是很多微信用户都...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作