2017-03-24 15 views
2

Typescriptでは、読み取り専用修飾子をタイプから削除できますか?例えばTypescript - 読み取り専用修飾子を削除する

type Writeable<T> = { [P in keyof T]: T[P] }; 

使用法:

interface Foo { 
    readonly bar: boolean; 
} 

let baz: Writeable<Foo>; 

baz.bar = true; 

は、すべてのプロパティが書き込み可能にするために型に修飾子を追加することが可能ですか?

答えて

2

がある方法です:

type Writeable<T extends { [x: string]: any }, K extends string> = { 
    [P in K]: T[P]; 
} 

code in playground

は、しかし、あなたは反対の道を行くことができ、それは物事がはるかに容易になります。

interface Foo { 
    bar: boolean; 
} 

type ReadonlyFoo = Readonly<Foo>; 

let baz: Foo; 
baz.bar = true; // fine 

(baz as ReadonlyFoo).bar = true; // error 

code in playground

関連する問題