readonly
修饰符的作用限制修改:
readonly
修饰符的属性只能在声明时或在构造函数中初始化,一旦初始化后,任何尝试修改该属性的操作都会导致编译时错误。提高代码安全性:
readonly
属性可以防止不小心或恶意地修改对象的某些关键属性,确保数据的不可变性。readonly
class Person {
readonly name: string;
readonly age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
const person = new Person("Alice", 30);
console.log(person.name); // 输出: Alice
console.log(person.age); // 输出: 30
// 错误: 试图修改 readonly 属性
// person.name = "Bob";
解释:
Person
类中,name
和 age
属性使用了 readonly
修饰符,这意味着它们只能在构造函数中初始化,之后就不能再修改。person.name
或 person.age
会导致编译错误,确保这些属性在对象的生命周期内保持不变。readonly
interface Point {
readonly x: number;
readonly y: number;
}
const point: Point = { x: 10, y: 20 };
console.log(point.x); // 输出: 10
console.log(point.y); // 输出: 20
// 错误: 试图修改 readonly 属性
// point.x = 30;
解释:
Point
接口中,x
和 y
属性被声明为 readonly
。这意味着一旦 point
对象被初始化,它的 x
和 y
属性就不能被修改。point.x
会导致编译错误。readonly
修饰符用于防止对象属性在初始化后被修改,确保属性的不可变性。