2016-05-31 57 views
2

在D3中,通常爲已有的D3變量添加屬性。如何擴展和界面已設置類型?

一個例子(ES5):

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

錯誤:

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

如果我們能夠創建一個新的界面,我們會簡單做:

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

如何擴展在D3的類型中已經定義了接口Node以允許新的屬性?

回答

2

Typescript允許拆分接口聲明爲多個文件。所以,你可以再補充波紋管定義代碼

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

不需要這樣新的接口定義(Node_)

任何地方