📅  最后修改于: 2023-12-03 14:40:12.407000             🧑  作者: Mango
在 TypeScript 中,const
和 readonly
都用于创建不可变的数据项。但是,它们之间有一些重要的区别。在本文中,我们将介绍这些区别以及使用它们的场景。
在 TypeScript 中使用 const
关键字来声明只读变量或常量。一旦给变量或常量赋值后,就不能再更改它了。如果您尝试更改一个 const 值,则会得到一个编译时错误。
const foo = 'bar';
foo = 'baz'; // Error! Cannot assign to 'foo' because it is a constant.
常量的类型推断和变量一样:
const foo = 42; // type: number
const bar = 'bar'; // type: string
与 const 不同,readonly
关键字可以用于类成员变量。readonly
变量可以在类构造函数中初始化,但一旦初始化后,它的值不能再更改。readonly
变量可以是构造函数参数的属性
或者类属性
。和 const 不同,readonly
用于类成员变量,const 用于变量。
class Foo {
readonly bar = 'bar';
constructor() {
// Can initialize readonly properties in constructor
this.bar = 'baz';
}
}
在上面的例子中,bar
属性首先在类中声明,并使用 readonly
关键字将其标记为只读。在构造函数中,bar
属性被初始化为 'baz'
,并且一旦初始化后,不能再更改。
readonly
可用于类成员变量,而 const
不可以。const
用于变量,readonly
用于类成员变量。const
值在声明时就必须要进行初始化,readonly
值可以在构造函数中初始化。const
可以在函数作用域内声明,readonly
只能在类成员变量中声明。总结:const
和 readonly
关键字看似相似,但在使用它们时需要注意区别。const一般用于表示逻辑上的常量、变量,readonly则一般用于表示为不可变的类属性。