2017-06-22 51 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); }); 

希望帮助!