Appearance
只读数组类型
ReadonlyArray 是一个特殊的类型,描述了不应该被改变的数组。
typeScript
function doStuff(values: ReadonlyArray<string>) {
// 我们可以从 'values' 读数据...
const copy = values.slice();
console.log(`第一个值是 ${values[0]}`);
// ...但我们不能改变 'vulues' 的值。
values.push("hello!");
}
和属性的 readonly 修饰符一样,它主要是一个我们可以用来了解意图的工具。当我们看到一个返回 ReadonlyArrays 的函数时,它告诉我们我们根本不打算改变其内容,而当我们看到一个消耗 ReadonlyArrays 的函数时,它告诉我们可以将任何数组传入该函数,而不用担心它会改变其内容。
与 Array 不同,没有一个我们可以使用的 ReadonlyArray 构造函数。
typescript
new ReadonlyArray("red", "green", "blue");
相反,我们可以将普通的 Array 分配给 ReadonlyArray 。
typescript
const roArray: ReadonlyArray<string> = ["red", "green", "blue"];
正如 TypeScript 为 Array<Type> 提供了 Type[] 的速记语法一样,它也为 ReadonlyArray<Type> 提供了只读 Type[] 的速记语法。
typescript
function doStuff(values: readonly string[]) {
// 我们可以从 'values' 读数据...
const copy = values.slice();
console.log(`The first value is ${values[0]}`);
// 但我们不能改变 'vulues' 的值。
values.push("hello!");
}
最后要注意的是,与 readony 属性修改器不同,可分配性在普通 Array 和 ReadonlyArray 之间不是双向的。
typescript
let x: readonly string[] = [];
let y: string[] = [];
x = y;
y = x;