const和readonly的区别如下:
const用于声明编译时常量,而readonly用于声明运行时只读属性。
const可以用于基本类型、对象字面量和数组字面量,而readonly只能用于对象属性和数组元素。
const声明的变量在整个作用域内具有相同的值,而readonly声明的属性只能在声明或构造函数中初始化,并且不能在其他地方重新赋值。
使用方式:
- 使用
const
关键字可以直接在声明时给变量赋值,其值不能被修改。 - 使用
readonly
关键字可以将类的属性或接口的属性设置为只读,即只能在声明或构造函数中初始化,不能在其他地方进行修改。
常见的使用情况和举例:
- 使用
const
:
- 定义数学常量:
const pi = 3.14159;
- 定义固定的配置信息:
const apiUrl = "https://api.example.com";
使用readonly
:
- 在类中将某些属性设置为只读:
class Person { readonly name: string; constructor(name: string) { this.name = name; } } const person = new Person("Alice"); console.log(person.name); // 输出: "Alice" person.name = "Bob"; // 错误: 'name' 是只读属性,不能重新赋值
在接口中定义只读属性:
interface Point { readonly x: number; readonly y: number; } const point: Point = { x: 10, y: 20 }; console.log(point.x, point.y); // 输出: 10 20 point.x = 30; // 错误: 'x' 是只读属性,不能重新赋值
总结来说,const
用于定义编译时常量,而readonly
用于定义运行时只读属性。在需要保证某些值不被修改的情况下,可以使用const
或readonly
来增加代码的可靠性和可维护性。