我有一些JavaScript代码,该代码使用D3 Sankey插件来创建图表。在我的新项目中,我需要重复使用相同的代码,但是新项目在打字稿中。我正在寻找插件的绝对模拟文件。我浏览了https://github.com/definitytyped/definelitytyped,但找不到。
还有其他位置可以从中获得此文件吗?
Sankey插件链接:https://github.com/d3/d3-sankey
另外,如果没有此插件的d.ts文件,是否可以通过Typescript访问它?
D3插件中的代码看起来像这样:
d3.sankey = function(){
//其余代码在这里
}
我在JavaScript中使用它的方式如下:
d3.sankey()。nodeWidth(30)。尺寸([100,100]);
会感谢任何帮助或指导。
谢谢!
作为一个头部,我刚刚向肯定地提交了拉动请求#16051 ,其中包含 d3-sankey的TS定义。
合并后,它们将按照标准过程发布到 npm/@types 。IE。npm install --save-dev @types/d3-sankey
会做。
很重要:当我编写它们时,我注意到 d3-sankey中的当前API文档 repo似乎在某种程度上需要纠正(例如,缺少方法,提到访问者函数,哪些访问者函数,哪些功能在代码库中不使用)
当我有第二秒时,我将在那里提交问题/提交Pr。
更新(2017-05-01):
d3-sankey的"官方" 打字条定义是现在可用(请参阅NPM @type/d3-sankey)。如上所述,只需将它们与npm
一起使用。
更新D3-Sankey的实际API文档以反映源代码的PR仍在此处等待合并。
您需要将d3
类型的定义扩展到包括sankey()
方法及其接受的方法。
在绝对最小值处,您需要使用声明文件扩展d3
模块,以明确d3
已使用d3-sankey
模块扩展。您可以通过创建您直接将其放置在@types
中的定义文件,并使用以下内容:
declare module 'd3' {
export function sankey(...args[]) : any;
}
这告诉TS,有一个d3
模块,并导出列出的函数。如果d3
模块已经存在,则扩展了该模块。
因此,您可以导入d3
服务并使用:
import dd3 = require('d3');
dd3.sankey();
如果要在类型文件上展开,则将定义文件编写为:
declare module 'd3' {
interface ISankey {
nodeWidth() : number;
nodeWidth(width : number|{(arg: number) : number}) : void;
// Add Other d3.sankey Methods Here
}
export function sankey() : ISankey;
}