D3 Sankey的打字稿类型定义



我有一些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;    
}

最新更新