Javascript TypeScript编译器:@types/d3 tip-无法调用其类型缺少调用签名的表达式

Javascript TypeScript编译器:@types/d3 tip-无法调用其类型缺少调用签名的表达式,javascript,d3.js,typescript,typescript-typings,Javascript,D3.js,Typescript,Typescript Typings,我试图理解这个错误,阅读了所有带有类似错误信息的问题,但找不到任何帮助 我对打字很不熟悉,但正在逐步熟悉。我试图将d3 tip模块包括在d3中。我安装了@types/d3和@types/d3尖端。现在我的代码看起来像这样 import*从“d3”作为d3导入; 从“d3 tip”导入*作为d3Tip; console.log(d3Tip)/=>打印来自d3Tip模块的函数签名 console.log(d3Tip()) //=>导致错误“无法调用类型缺少调用签名的表达式” d3.tip=d3Ti

我试图理解这个错误,阅读了所有带有类似错误信息的问题,但找不到任何帮助

我对打字很不熟悉,但正在逐步熟悉。我试图将d3 tip模块包括在d3中。我安装了@types/d3和@types/d3尖端。现在我的代码看起来像这样

import*从“d3”作为d3导入;
从“d3 tip”导入*作为d3Tip;
console.log(d3Tip)/=>打印来自d3Tip模块的函数签名
console.log(d3Tip())
//=>导致错误“无法调用类型缺少调用签名的表达式”
d3.tip=d3Tip
//=>导致类型“typeof”/node_modules/@types/d3/index”上不存在错误“Property”tip
我想我有两个问题:首先,我不能调用d3 tip方法,我真的不明白为什么如果有人能向我解释这一点,那就太好了。
其次,我不能将d3Tip函数作为d3对象的新属性附加(这是我以前使用ES6所做的,它工作得很好),然后使用
d3.tip()
创建一个tip

我知道我可以找到其他解决方案,比如自己设计提示(可能花费的时间更少^^^^),但我更想知道如何解决这个问题


有什么想法吗?

好问题。最初我使用
npm install@types/d3 tip安装。然后我需要将
/node\u modules/@types/d3 tip/index.d.ts
复制到
/d3 tip.d.ts
。现在,以下代码起作用了:

从“d3”导入*为d3;
导入“/d3提示”;
d3.tip().hide();
设arc=d3.arc();

因此,
d3tip.d.ts
中的声明将根据需要合并到d3名称空间中。为什么不抄袭就不行我不知道。有什么帮助吗?

我明天会试试,但你的解决方案似乎有道理!一旦我从工作中测试它,我将立即进行验证:-)Erf,无法使其工作:当我导入“/d3 tip”
时,webpack抛出一个错误,表示它找不到文件(我确实将index.d.ts复制到组件所在的同一文件夹中,将其重命名为d3 tip.d.ts)。当我尝试导入“/d3 tip.d”时,构建失败。。。我猜问题来自Webpack及其模块系统:-/
import * as d3 from 'd3';
import * as d3Tip from 'd3-tip';
console.log(d3Tip) // => print the function signature from d3-tip module
console.log(d3Tip()) 
// => results in error 'Cannot invoke an expression whose type lacks a call signature'
d3.tip = d3Tip 
// => results in error 'Property 'tip' does not exist on type 'typeof "<my-project-path>/node_modules/@types/d3/index"''