关键字const和readonly都用于声明只读变量或只读属性,但它们的用法和作用有所不同。
- const关键字:
-
可以用于变量和属性声明。
-
声明的变量或属性的值在编译时确定,并且在整个程序执行过程中不可修改。
-
在变量声明时必须进行初始化,且初始化后的值不能再改变。
-
适用于基本数据类型、枚举、字符串字面量和对象字面量。
示例:
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); }
- readonly关键字:
-
只能用于属性声明。
-
声明的属性只能在声明时或构造函数中初始化,并且在整个对象的生命周期中不可修改。
-
适用于类的成员属性。
示例:
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声明的属性