关键字const和readonly都用于声明只读变量或只读属性,但它们的用法和作用有所不同。
可以用于变量和属性声明。
声明的变量或属性的值在编译时确定,并且在整个程序执行过程中不可修改。
在变量声明时必须进行初始化,且初始化后的值不能再改变。
适用于基本数据类型、枚举、字符串字面量和对象字面量。
示例:
const PI = 3.14159;
const person = { name: 'John', age: 25 };
person.age = 30; // Error: 不能修改const声明的对象引用
function printNumber() {
const x = 10;
x = 20; // Error: 不能修改const声明的变量
console.log(x);
}
只能用于属性声明。
声明的属性只能在声明时或构造函数中初始化,并且在整个对象的生命周期中不可修改。
适用于类的成员属性。
示例:
class Person {
readonly name: string;
constructor(name: string) {
this.name = name;
}
changeName(newName: string) {
this.name = newName; // Error: 不能修改readonly声明的属性
}
}
const person = new Person('John');
person.name = 'Jane'; // Error: 不能修改readonly声明的属性