TypeScript 中如何使用 "readonly" 修饰符

阅读时长 3 分钟读完

TypeScript 中如何使用 "readonly" 修饰符

在 TypeScript 中,我们可以使用 "readonly" 修饰符来定义只读属性。只读属性只能在初始化时被赋值,无法被修改。这在我们需要保证某些属性不被修改的时候非常有用。

什么是只读属性?

只读属性是指在对象初始化时被定义,并且在后续的使用中不能被修改的属性。只读属性通常用于定义一些常量,或者不希望被修改的配置项等。只读属性的值只能在初始化的时候赋值,一旦赋值后,就无法再次修改。

在上面的代码中,我们定义了一个 Person 类,并且使用 "readonly" 修饰符定义了一个只读属性 name。这个属性只能在初始化时被赋值,无法被修改。

如何使用只读属性

在 TypeScript 中,我们可以使用 "readonly" 修饰符来定义只读属性。这个修饰符可以跟在属性名后面,表示这个属性是只读的。例如:

在上面的例子中,我们定义了一个只读属性 name。这个属性只能在初始化时被定义,并且不能被修改。如果我们尝试在后面修改这个属性,TypeScript 编译器会报错,提示我们这个属性是只读的。

只读属性 vs const 常量

在 TypeScript 中,我们还可以使用 const 关键字来定义常量。那么只读属性和 const 常量有什么区别呢?

首先,只读属性是定义在类中的,而 const 常量是定义在一个作用域中的。只读属性只能在初始化时被赋值,而 const 常量是在定义时被赋值。因此,只读属性的值可以在不同实例中不同,而 const 常量的值是整个作用域中唯一的。

-- -------------------- ---- -------
----- -- - -----
----- ------ -
  -------- --- ------ - -----
  ------------- --
-
--- -- - --- ---------
--- -- - --- ---------
------------------- -- ----
------------------- -- ----
----- - -- -- ------ ------ ------ -- ---- ------- -- -- - --------- ---------
-- - -- -- ------ ------ ------ -- ---- ------- -- -- - ---------

在上面的代码中,我们定义了一个 Circle 类和一个全局的 const 常量 PI。为了比较它们的区别,我们在 Circle 类中也定义了一个只读属性 PI。当我们创建两个 Circle 实例时,虽然它们的只读属性 PI 是相同的,但是它们实际上是两个不同的对象,因此这些属性的值是可以不同的。而全局的 const 常量 PI 的值是整个应用中唯一的,因此无法被修改。

总结

在 TypeScript 中,我们可以使用 "readonly" 修饰符来定义只读属性,只读属性只能在初始化时被赋值,不能被修改。只读属性适用于定义一些常量或者不希望被修改的配置项等场景。与 const 常量不同,只读属性是定义在类中的,可以有多个实例,每个实例的只读属性的值是可以不同的。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a4205448841e989408c9f2

纠错
反馈