【问题标题】:d3-tip library in TypescriptTypescript 中的 d3-tip 库
【发布时间】:2014-09-23 17:41:07
【问题描述】:

我是 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 的正确方法是什么?

【问题讨论】:

    标签: javascript d3.js typescript


    【解决方案1】:

    基于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;
        }
    }
    

    【讨论】:

    • 我正在使用 TS 1.6.3 并尝试在 d3tip.js 上实现此功能,但我收到了重复的 d3 声明错误。我不确定我是否理解这个解决方案。我是否将这两个块粘贴到文件顶部?你能评论一下吗?
    【解决方案2】:

    使用 d3.d.ts 文件 (https://github.com/borisyankov/DefinitelyTyped/blob/master/d3/d3.d.ts) 的当前结构,您现在可以这样做:

    declare module d3 {
        export var tip: any;
    }
    

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

    【讨论】:

      【解决方案3】:

      对我来说,这样的东西适用于 angular 4 (typescript 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;
      

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

      【讨论】:

        猜你喜欢
        • 2017-09-06
        • 2015-08-26
        • 2017-01-17
        • 2014-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-16
        • 1970-01-01
        相关资源
        最近更新 更多