2016-05-31 15 views
2

D3では、既存のD3変数に属性を追加するのが一般的です。タイピングで既に拡張してインターフェイスを拡張する方法は?

例(ES5):

force = d3.layout.force() 
    .nodes([{ links: 0, color: '#2BC9E9' }]) 

エラー:我々は拡張するにはどうすればよい

interface Node_ extends Node { 
    links: number; 
    color: string; 
} 

Argument of type '{ links: number; color: string; }[]' is not assignable to 
parameter of type 'Node[]'. 

我々はシンプルだろう新しいインターフェイスを作成することができればインタフェースNodeはD3の入力ですでに定義されているため、新しい属性が可能ですか?

答えて

2

Typescriptでは、複数のファイルに分割されたインタフェース宣言が可能です。だから、ちょうどこの方法で新しいインターフェース定義(Node_)は

を必要とされていない

declare namespace d3 { 
    namespace layout { 
     namespace force { 
      interface Node { 
       links?: number; 
       color?: string; 
      } 
     } 
    } 
} 

あなたのコード内の任意の場所に怒鳴るの定義を追加することができます

関連する問題