Typescript中的d3-tip库

时间:2014-07-31 16:48:59

标签: javascript d3.js typescript

我是打字稿的新手,并试图将d3-tip库(https://github.com/Caged/d3-tip)包含到我的项目中。通常,我会使用

declare var [name_of_library]: any;

让编译器知道命名空间,但d3-tip似乎是在d3命名空间下注入的:

(function (root, factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD. Register as an anonymous module with d3 as a dependency.
        define(['d3'], factory)
    } else {
        // Browser global.
        root.d3.tip = factory(root.d3)
    }
}(this, function (d3) {  
    ...

在Typescript项目中使用d3-tip的正确方法是什么?

3 个答案:

答案 0 :(得分:3)

基于https://github.com/borisyankov/DefinitelyTyped/blob/master/d3/d3.d.ts你有

declare var d3: D3.Base;

这意味着要添加到d3您只需添加到D3.Base,所以:

declare module D3 {
    export interface Base{
        tip: any;
    }
}

答案 1 :(得分:2)

使用d3.d.ts文件(https://github.com/borisyankov/DefinitelyTyped/blob/master/d3/d3.d.ts)的当前结构,这就是你现在完成它的方法:

declare module d3 {
    export var tip: any;
}

然而,“正确”的解决方案是编写完整的类型定义文件。以上只是让编译器静音的一种快速方法。

答案 2 :(得分:0)

对我来说这样的东西适用于角4(打字稿2.2,@ types / d3:'^ 3.5.5'@ types / d3-tip:'^ 3.5.5'“d3”:“^ 3.5.5”, “d3-tip”:“^ 0.7.1”,)......

declare var d3:any;
import 'd3';
import * as d3tip from 'd3-tip';
d3.tip = d3tip;

我同意这有点奇怪..但是它确实有效。