TypeScript 如何使对象属性变得不可改变
不可变的对象属性的简单定义是,一旦我们定义并初始化了对象属性,我们就不能修改这些属性。
我们可以使用const关键字,但我们必须在创建属性时初始化该属性。所以,我们必须使用readonly关键字来使属性immutable,允许它只读。所以,一旦我们初始化了该属性,我们就不能修改该属性的值。
语法
用户可以按照下面的语法来使用readonly关键字,使对象属性immutable。
在上面的语法中,’test’接口的property1是不可变的,因为它只是只读的,我们不能在对象块之外改变它的状态。
示例
在下面的例子中,immutableObject包含key1、key2和key3。我们在key1和key2中使用了readonly关键字,使这些属性成为不可变的。
我们已经在类的构造函数中初始化了不可变的属性。如果我们不在类的构造函数中初始化不可变的对象属性,会产生一个编译错误。
另外,我们不能在类之外改变不可变的对象属性的值。
输出
上述代码将产生以下输出 —
示例
在这个例子中,我们已经创建了数组。该数组的类型是ReadonlyArray。用户可以尝试改变数组中任何索引的值,他们会得到一个编译错误,因为我们不能改变不可变的属性的值。
另外,用户可以尝试使用数组的push()和pop()方法来更新不可变数组,观察输出中的编译错误。
输出
上述代码将产生以下输出 —
示例
在 TypeScripts 中,set 是对象。在这个例子中,我们已经创建了set对象,它的类型是ReadonlySet,这使得这个set是不可改变的。用户可以看到,我们可以通过遍历这个集合来访问其中的每一个元素,但我们不能从这个集合中添加或删除元素。
输出
上述代码将产生以下输出 —
用户在本教程中学习了使用readonly关键字创建不可变的对象。此外,他们还学会了如何创建不可变的集合和数组。
使用不可变对象的好处是,它提供了代码的安全性并提高了代码的性能。