跳到主要内容

工具类型之Readonly

Readonly<T>

顾名思义,表明类型或接口的定义是只读的

示例代码

假设有一条数据我们不希望任何人更新,可以使用const定义,但如果是引用类型的数据就失~效~了~

type ReadonlyType = {
name: string
age: number
}
const ReadonlyCat: ReadonlyType = {
name: '喵喵',
age: 2
}
ReadonlyCat.age = 10

这个时候可以使用Readonly<ReadonlyType>进行类型约束:

const ReadonlyCat2: Readonly<ReadonlyType> = {
name: '喵喵',
age: 2
}
ReadonlyCat2.age = 10

这个时候就会抛出错误:Cannot assign to 'age' because it is a read-only property.ts(2540)

Readonly仅适用于接口或自定义类型,因此对let或者var定义的基本类型不生效,乖乖用const吧:

let catName: Readonly<string> = '喵喵'
catName = '汪汪' // 不会报错