2017-06-22 78 views
0

我想實現的D3 V4線圖,按照Mike Bostock's article就可以了,但是當行我在角2D3-形狀誤差創造角2

這樣我已經安裝了D3 v4和所需分型。從我package.json摘錄:

"@types/d3": "^4.9.0", 
"@types/d3-array": "^1.2.0", 
"@types/d3-axis": "^1.0.8", 
"@types/d3-scale": "^1.0.6", 
"@types/d3-shape": "^1.2.0", 
"@types/d3-time-format": "^2.0.5", 
... 
"d3": "4.9.0", 
"d3-array": "^1.2.0", 
"d3-axis": "^1.0.8", 
"d3-scale": "^1.0.6", 
"d3-shape": "^1.2.0", 
"d3-time-format": "^2.0.5", 

但是,試圖創建line變量時,我收到一個錯誤,因爲它是期待一個[number, number]但按照指導我需要在這裏傳遞數據的項目,因此可以拿起日期和價值。我的代碼是:

var line = d3Shape.line() 
    .x(function(d) { return x(d.date); }) 
    .y(function(d) { return y(d.value); }); 

兩個錯誤這會產生如下:

Property 'date' does not exist on type '[number, number]'. 
Property 'value' does not exist on type '[number, number]'. 

有沒有其他人遇到這個錯誤,並知道如何解決?

回答

1

我以前經歷過這種情況,因爲這種類型而引起了很多混亂。我正在使用角度4.x並陷入了同樣的問題。解決的辦法是單純爲了打字稿瞭解類型和泛型來營救在這裏:

首先聲明數據爲D3線類型:

export type LineData = { date: any, value: any }; 

然後使用下面的泛型方法使用它:

var line = d3Shape.line<LineData>() 
    .x(function(d) { return this.x(d.date); }) 
    .y(function(d) { return this.y(d.value); }); 

希望幫助!