2017-12-20 8 views
1

import * as ss from 'simple-ajax-uploader'構文を使用して、型なしJS NPMモジュールをインポートしています。私はVSのコードは以下のtsconfig.jsonごとに認識することが期待され、/scripts/@types/simple-ajax-uploader/index.d.tsでタイプ定義ファイルを作成しました:インポートされたJSモジュールのローカルタイプの定義が認識されない

{ 
    "compilerOptions": { 
    "target": "es5", 
    "lib": ["dom", "es2015.promise", "es5"], 
    "moduleResolution": "node", 
    "experimentalDecorators": true, 
    "typeRoots": [ 
     "./node_modules/@types/", 
     "./scripts/@types/" 
    ], 
    "sourceMap": true, 
    "baseUrl": ".", 
    "jsx": "react" 
    }, 
    "compileOnSave": false 
} 

私は1 または次の他のをすれば、私ははインテリセンス得るか

  1. (したがって、グローバル変数としてssの治療)importを外しnode_modules/@types/simple-ajax-uploader
  2. に定義ファイルを置きます。

しかし、インポートではローカルタイプの定義を取得できません。私のモジュールはコンパイルされますが、ss.と入力すると、インテリセンスはありません。変数は明らかにanyとして扱われています。

私の何が価値があるため(これまでの最小限の)定義ファイルは、:

export as namespace ss; 

export interface SimpleUploadOptions { 
    // TODO 
} 

export class SimpleUpload { 
    constructor (options: SimpleUploadOptions) 
} 

答えて

0

それは私が輸入を取り外したとき、それが働いた理由typeRootsだけので、グローバルに定義された識別子のロード宣言(のために使用されていることが判明しますステートメント)。あなたはtsconfig.jsonpathsプロパティを使用する必要がインポートされたモジュールの場合:

"paths" :{ 
    "*": ["./scripts/@types/*", "*"] 
} 

これは、モジュールの解決を実行するときに指定したフォルダ(デフォルトの場所に加えて、例えばnode_modules)で探すようにコンパイラに指示します。

https://stackoverflow.com/a/40326719/3248302私に正しい方向を指示していただきありがとうございます)

関連する問題