Ts接口中的readonly修饰符的用法

含义

readonly是Ts中修饰符的其中一种, 其作用可以让, 接口, 类型别名只读不可更改🤓

写法

在变量前, 属性前, 类型前加上readonly

用法

  • 在类型别名中约束🤨
    type User = {
    // 约束id只读
      readonly id: string
      name: string
      age: number
      // 约束arr只读不能替换, 但是可以调用Array属性的方法改变内容
      readonly arr: number[]
    }

    let u: User = {
      id: '123',
      name: '张三',
      age: 123,
      arr: [123],
    }
    u.id = "222" // 报错:无法分配到 "id" ,因为它是只读属性
    u.name = "李四"
    u.arr = [1238] // 报错:无法分配到 "arr" ,因为它是只读属性。
    u.arr.push(123) // 可以使用 -> arr === [ 123, 123 ]
  • 在接口中约束同上

数组用法

  • 特殊写法👈
    // 和readonly number[] 等同
    let arr: ReadonlyArray<number> = [123]
  • 在类型约束前加readonly, 约束这个数组只读, 并不约束变量, 意味着可以替换整个变量🤔
    let arr: readonly number[] = [123] 
    arr = [1234] // 此时arr=[1234]
    arr.push(123) // 类型“readonly number[]”上不存在属性“push”。

如果要数组整个可读, 可以使用const约束

  • 在接口和类中约束
interface User  {
 // 约束变量和这个数组内容 都只读
    readonly arr: readonly number[],
}

编译结果🙊🙊

编译结果js文件中,不含有readonly修饰符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端冲刺

1毛也是爱~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值