關鍵字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聲明的屬性