2017-11-20 6 views
0

は、活字体のlib.d.tsで、次のインターフェイスを考えてみましょう:インターフェイスから非読み取り専用フィールドのみを選択するにはどうすればよいですか?

interface HTMLElement extends Element { 
    accessKey: string; 
    readonly children: HTMLCollection; 
    contentEditable: string; 
    readonly dataset: DOMStringMap; 
    dir: string; 
    draggable: boolean; 
    // ... many more 
} 

私は(下記に示すように)手動でそれらすべてを識別し、入力しなくても、readonlyではありません。このインタフェースのうちプロパティのみを選ぶだろうか?

type WriteableHTMLElProps = Pick<HTMLElement, "accessKey"|"contentEditable" /* ... */> 

注:適切な解決策は、これが延びるインターフェイスの非readonly特性を処理します。

答えて

2

現在のバージョンのTypeScriptではこれを自動的に行うことができるメカニズムは考えられません。

あなたは読み取り専用最終的な実装に濾過可能であろうと仮定して(これを実行するために利用できるようにマッピングされたタイプフィルタリングのための提案されたアイデアが必要になります。

例えば(構文はに応じてfew placesunder discussionです正確な詳細):

type OnlyReadonlyMembers<T> = { 
    [P in keyof T where T[P] is readonly]: T[P]; 
} 
関連する問題