私はノードモジュールAを別のノードモジュールBに依存しています。どちらもTypescriptで書かれています。モジュールBはPromiseをAに戻し、Promiseの実装としてbluebirdを選択しました。 Bはもちろんブルーバードのためのタイピングがあります。 Aは、(それはおそらく私の場合ではないはずです)、私はのようなエラーが出青い鳥のタイピングがない場合推移的な実装タイプが漏れた場合、なぜtscはあまりにも致命的なエラーを出しますか?
しかし、:
~/d/p/ensime-vscode ❯❯❯ tsc -p . ⏎ master ✭ ✱
node_modules/ensime-client/**/file-utils.d.ts(1,26):
error TS2307: Cannot find module 'bluebird'.
をこれが原因だったことを理解することが私にしばらく時間がかかりました青い鳥の具体的な約束のタイプを漏らして私に。すべてのパブリックリターンタイプをPromiseLikeに変更すると、エラーはなくなりました。
私の質問は、以前の私の独立したモジュールBでこれを検出する方法はありますか?私は以前に公開されていなかったタイプのモジュールが漏れたときに時々エラーが発生することを思い出しますが、この場合はモジュールBがうまく構築されました。私はTypescriptをとても新しくして以来、このことはとてもぼやけています。 Typescriptは私が慣れ親しんだものとは違う獣だと思う。
また、これらのケースでは、tscがより良いエラーメッセージを出すことはできませんか?
小更新: 私はローカルで、これがBに直接巻き込まれ定義されているタイプの「漏れた」んだ:
export interface CompletionsResponse extends Typehinted {
completions: [Completion]
}
interface Completion {
}
をエクスポートインタフェースの[TS] プロパティ「補完」がかプライベートネーム「完了」を使用しています。 インタフェース完了
私は、私も「bluebird'.Promiseのような依存関係から何かを暴露していた場合、直接この種のものをキャッチできるようにしたいと思います。 「ブルーバード」を過渡的な依存として公開することは決して私の意図ではありませんでした。正直なところ、タイピングを使ってそれを行う方法は分かりませんでした。ですから、これはうまくいきますが、起こったことは、「ブルーバード」がnpm toungueにタイピング「ピア依存」となったことです。
タイプの漏れはどういう意味ですか? –
私は全文で説明しているとおりです。私はブルーバードからプロミスを漏らしており、ブルーバードのためのタイピングがないデンピディーからこれらのエラーを得る。プロミス。私は公開APIをタイプしていたはずです:PromiseLike/Thenableへの初めから、これらのtscがdependeeでエラーをコンパイルするより良い方法が必要だと思います。 –
私が間違っていると分かっていれば訂正してください:あなたはモジュールBを使っているモジュールAを持っています。例えば。 B宣言ファイルは 'B.awesomeFunction()'が(Bluebird)Promiseを返すように指定しているからです。その場合、モジュールBがタイプの依存関係を正しく処理していることを確認しましたか? –