2017-02-16 10 views
0

、私は私のアプリでは、次のしている場合、宣言ファイルを持たないNPMライブラリからインポートタイプを宣言するにはどうすればよいですか?例えば

import Node from 'infamous/motor/Node' 
console.log(Node) 

だけで正常に動作します。 Nodeのための型定義がありませんので、しかし、私は実際にそれで何かをした瞬間、

import Node from 'infamous/motor/Node' 
console.log(new Node) 

は、活字体は文句を言うでしょう。どのようにノードのタイプを定義するのですか?

ライブラリには型宣言がありません。私は

import MotorNode from 'infamous/motor/Node' 

declare class MotorNode {} 
console.log(' --- ', new MotorNode) 

のようなものを試してみましたが、私はあなたがやろうとしている何をする必要があるとき、私は

./src/app.tsx(6,8): error TS2440: Import declaration conflicts with local declaration of 'MotorNode' 

答えて

2

エラーを取得し、私は私のプロジェクトのためのモジュールの拡張製品を置いているexternals.d.tsファイルを作成し、コンパイルに私のtsconfig.jsonが含まれていることを確認してください。

あなたのケースでは増加は次のようなものになります(外の任意のモジュールでなければならない)、このようなモジュールの拡張がグローバルであることを持っているので

declare module "infamous/motor/Node" { 
    class Node { 
    // Whatever you need here... 
    } 

    export default Node; 
} 

私は別のファイルにそれを置くと、そして上位レベルimportまたはexportを含むファイルがモジュールです。 (TypeScript投稿者のthis commentを参照してください)

+0

ありがとうございました!そのファイルをTypeScriptで取得するにはどうすればよいですか?具体的には、Webpackにts-loaderを使用しています。 – trusktr

+0

ああ、私はそれを 'include'や' files'に加えています。 – trusktr

+0

ええ、それは私が意味することです。「私の 'tsconfig.json'がコンパイルにそれを含んでいることを確認してください。 – Louis

関連する問題