2016-12-01 10 views
2

このエラーを理解しようとしていますが、すべての質問を同様のエラーメッセージで読み上げていますが、TypeScriptコンパイラ:@ types/d3-tip - タイプにコールサインがない式を呼び出せません

私はかなりTypeScriptに慣れていますが、そこに着いています。私はd3で動作するd3-tipモジュールを含めることを試みています。 @ types/d3と@ types/d3-tipをインストールしました。今、私のコードは、私が思うこの

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"'' 

のように見える私は2つの問題を抱えている:最初に、私はD3-チップメソッドを呼び出すことはできません誰かが私にそれを説明することができればそれができるでしょう、なぜ、私は本当に理解していませんすばらしいです。
第2に、d3オブジェクトの新しいプロパティとしてd3Tip関数を追加することができません。これは、以前はd3.tip()というヒントを作成していました。

私は自分自身でチップを設計するような他の解決策を見つけることができると知っていますが(これは時間がかかりません^^)、これを解決する方法を理解したいと思います。

アイデア?

答えて

0

良い質問です。最初はnpm install @types/d3-tipでインストールします。次に./node_modules/@types/d3-tip/index.d.ts./d3-tip.d.tsにコピーする必要があります。今、次のコードは動作します:

import * as d3 from "d3"; 
import "./d3-tip"; 

d3.tip().hide(); 
let arc = d3.arc(); 

たいようd3-tip.d.tsでの宣言は、D3の名前空間にマージされています。なぜそれはコピーせずに動作しません私はヒントを持っていません。どんな助け?

+0

明日これを試してみますが、あなたのソリューションは理にかなっているようです。 – Ripley511

+0

Erf、動作させることができません:私が '' import './d3-tip "'を実行すると、webpackはファイルを見つけることができないというエラーを投げます(私はindex.d.tsをコンポーネントと同じフォルダにコピーし、d3-tip.d.tsという名前を変更しました)。 ./d3-tip.d "をインポートしようとすると、ビルドに失敗します...私はWebpackとそのモジュールシステムから問題が発生していると推測しています: - / – Ripley511

関連する問題