TypeScript Readonly只读类型如何工作

TypeScript 有许多实用程序类型,它们是 TypeScript 专门为解决问题而创建的类型。在这篇文章中,我们来看看Readonly类型。

TypeScript 只读类型#

顾名思义,ReadonlyTypeScript 中的类型表明特定类型是只读的。

让我们看一个例子。下面,我们不希望任何人更新myObject. 我们可以像这样使它成为一个只读对象:

type User = {
    firstName: string,
    lastName: string
}

let firstUser:Readonly<User> = {
    firstName: "John",
    lastName: "Doe"
}

如果您尝试更改 的属性firstUser,您将收到以下错误:


Cannot assign to 'firstName' because it is a read-only property.

只读变量在 TypeScript 中不起作用

当我们定义User上面的类型时,我们正在创建一个自定义接口——即对象必须符合的东西。Readonly仅适用于我们使用的接口或自定义类型。因此,我们仍然可以编辑Readonly变量:

let myVariable:Readonly<string> = "Hello World";
myVariable = "Goodbye World";
console.log(myVariable); // console logs "Goodbye World"

上面的代码是有效的,并且可以在 TypeScript 中工作。如果您需要只读变量,您可以简单地使用const,即:

const myVariable:string = "Hello World";
// Throws error: Cannot assign to 'myVariable' because it is a constant.
myVariable = "Goodbye World";