2017-03-02 2 views
0

宣言の周りに私の頭を包み込むことはできません。モジュールの一部だけをdeclareにしたいのであれば、それは正しい方法でしょうか(anyの使用を無視します)?JSモジュールの一部のみを宣言するには?

import { Method as JaysonMethod } from 'jayson/promise'; 
declare class JaysonMethod { 
    handler: any; 
    execute(server: any, requestParams: any, callback: any) : void; 
} 

もしそうなら、私は宣言がMethodをインポートし、他のモジュールで利用できるようにしたい場合は?宣言を.d.tsファイルに入れなければならない場合は、という別名で常にMethodをインポートする必要がありますか? TypeScriptは宣言を実際のモジュールまたはその一部とどのように一致させますか?

私は本当に混乱しているし、良い説明を見つけることができないようです。

+0

'インポート{JaysonMethodの方法}に含める...'ばかりという名前のエクスポートの名前を変更します。変数呼び出しJaysonMethodを作成します。 – unional

答えて

0

簡潔に言えば、おそらく変数とそのタイプを混同していた可能性があります。

import { Method as JaysonMethod } 'jayson/promise'は、Methodの型を宣言しません。名前付きエクスポートの名前を変更するのは、ES6の構文です。

次のようなものが動作するはずです:

import { Method } from 'jayson/promise'; 

declare class JaysonMethod { ... } 
const typedMethod: JaysonMethod = Method 

// typedMethod is now typed. 
// or 
(Method as JaysonMethod)... 

の更新:あなたの必要性に基づいて、代わりにタイピングファイルを作成するのが最善です。ような何か:

// custom-typings/jayson.d.ts 
declare module 'jayson/promise' { 
    export class Method { ... } 
} 

そして、あなたのtsconfig.json

{ 
    "include": [ "custom-typings" ] 
} 
+0

ご返信ありがとうございます!あなたのコードが宣言を(インポートされた)実装にどのようにマッピングするか分かりません。インポートされた 'Method'を再び使用することはありません。 – ctusch

+0

あなたは正しいです。私は 'Method'を使うのを忘れました:) – unional

+0

私は答えを更新しました。あなたがしたいことをしているかどうかを確認してください。 – unional

関連する問題