假设我有以下可变类:
class Foo {
constructor(public bar: any) { }
}
我可以这样定义此类的readonly
实例:
const foo: Readonly<Foo> = new Foo(123);
foo.bar = 456; // error, can't reassign to bar because it's readonly.
我希望能够做到与此相反的事情,即类是不可变的:
class Foo {
constructor(public readonly bar: any) { }
}
然后可以这样制作可变版本:
const foo: Mutable<Foo> = new Foo(123);
foo.bar = 456;
可以的吗?
Mutable<T>
是像Readonly<T>
这样的类型,那么我该如何转换为Mutable<Foo>
? - Matthew Laytontype Mutable<T> = { -readonly [P in keyof T]: T[P] };
。然而,这是危险的,因为你可能会在以后更改类Foo的实现,认为bar是只读的==>它可能会破坏你的应用程序。 - HTN