2017-03-23 12 views
2

入力によって見つからないノードモジュールを使用していますが、型定義されていません。クラスモジュール(TypeScript)の宣言ファイル

モジュールの基本的な使用は、次のとおりです。

import * as SomeClass from 'some-module'; 

var someObject = new SomeClass("some string"); 
someObject.someMethod(); 

あなたが見ることができるように、このモジュールは、デフォルトとしてクラスをエクスポートします。私はそれのための宣言ファイルを書く方法を考え出していない。

これは私がやって管理がベストです:

declare module 'some-module' { 
    export default class SomeClass { 
     constructor (someArg: string); 
     someMethod(): void; 
    } 
} 

はところでそれがJavaScriptlyに動作します。 TypeScriptは私を悩ますだけです。

これを解決する方法はありますか?あなただけの活字体のエラーを回避したいとItelliSenseを心配していない場合は

+0

コードをes5に移行していますか?もしあなたがそうしたら、代わりに 'import SomeClass = require( 'some-module')'を使うことをお勧めします....それは短い話です – unional

答えて

0

ちょうどたとえばファイルあなたの初めにそのようなあなたのクラスライブラリを宣言:

declare var SomeClass: any; 
+0

あなたの投稿を編集してこの情報を追加してください – OrcusZ

1

を宣言するために、あなたはこれを行う必要があります:

declare module 'some-module' { 
    class SomeClass { 
     constructor (someArg: string); 
     someMethod(): void; 
    } 
    namespace SomeClass {} 
    export = SomeClass; 
} 

UPDATEは:指摘のためのブレイクEmbreyに感謝し、ハックnamespace SomeClass {}は、この作業を取得するために必要とされます。 詳細はhttps://github.com/Microsoft/TypeScript/issues/5073を参照してください。

+0

それはエラーを生成します: TS2497:モジュール '' some-module ''が非モジュールエンティティに解決され、この構造体を使用してインポートできません。 importステートメントで。私はES6 BTWに移行する。 – Alon

+0

別のファイルに配置する必要があります。トップレベルのインポート/エクスポートを持つファイルにはありません。 'custom-typings/some-module.d.ts'として保存し、それをtsconfig.jsonに組み込みます。 – unional

+0

アプリケーションですか、パッケージですか? – unional

関連する問題