我是一个新手打字,并试图包括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的正确方法是什么?
基于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;
}
}
用当前的d3.d.结构。ts文件(https://github.com/borisyankov/DefinitelyTyped/blob/master/d3/d3.d.ts),现在您将这样完成它:
declare module d3 {
export var tip: any;
}
然而,"正确"的解决方案是编写一个完整的类型定义文件。以上只是一种让编译器静默的快速方法。
对我这种东西与角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;
我同意这有点奇怪……