In Typescript, is it possible to remove the readonly modifier from a type?
For example:
type Writeable = { [P in keyof T]: T[P] };
There's a way:
type Writeable = {
[P in K]: T[P];
}
(code in playground)
But you can go the opposite way and it will make things much easier:
interface Foo {
bar: boolean;
}
type ReadonlyFoo = Readonly;
let baz: Foo;
baz.bar = true; // fine
(baz as ReadonlyFoo).bar = true; // error
(code in playground)
Since typescript 2.8 there's a new way to do it:
type Writeable = { -readonly [P in keyof T]: T[P] };
If you need your type to be writeable recursively, then:
type DeepWriteable = { -readonly [P in keyof T]: DeepWriteable };
These type definitions are called mapped types