2016-05-09 9 views
1

既存のjavaScriptライブラリのタイスクリプト定義ファイルを作成しようとしていますが、実行時エラーが発生し続けます。typescript定義コンストラクタまたは関数?

var api = new Pdok.Api(config); 

私はtypescriptです定義ファイルを作成し、そしてにできる午前:作品を供給して、次の行が含まれていた

/** 
* Pdok namespace, will hold Api namespace 
* @namespace 
*/ 
Pdok = {}; 

Pdok.Api = function(config) { 

/* implementation details are here... */ 
} 

javascriptのコード例:

ライブラリには、次のコードが含まれています問題なくコンパイルできます。定義は次のようになります。 キャッチされない例外TypeError:実行時に

declare namespace Pdok 
{ 
    interface configOptions { 
     /* .. details .. */ 
    } 

    class Api { 
     constructor(config: configOptions); 
    } 
} 

、私は次のエラーを取得するPdok.Apiが得るために、私.d.tsファイルにする必要がありますどのようなコンストラクタ

ではありませんこれは働いている?

+0

興味深いことに、[それらの例](http://kaart.pdok.nl/を使用'api = Pdok.Api(con​​fig)'( 'new'を使用しない)として使用法を示していますが、' Api'関数はコンストラクタのように見えます。(api/api-doc/symbols/src/api_js_pdok-api.js.html) ( 'this''を束にして明示的に何も返さない)。 – Aaron

+0

はい、コメントのコードがhttps://www.pdok.nl/sites/default/files/pdokkaart/pdok-kaart-source-code-20130726.zipから入手できる例と異なっていたことにも気付きました。これらのファイルの例はすべて動作しています。これもpdok-api.jsで使用したソースです。 –

答えて

0

この回答に基づき、https://stackoverflow.com/a/15008808/4516689は、ソースが正しく読み込まれていない可能性があります。

デバッガを設定します。変数のPdok.Apiがどのように設定されているかを確認してください。

debugger; 
var api = new Pdok.Api(config); 

又はこれが返すべき

alert(Pdok.Api); 
var api = new Pdok.Api(config); 

"が機能(設定){..."

+0

あなたは正しいです。問題は、スクリプトが正しい順序でロードされていないことでした。 –

+0

独自の.d.tsを作成した場合、おそらくこのリンクが役立ちます。 https://github.com/fivetran/typescript-closure-tools JSDocから.d.tsを作成します。完璧ではないが、あなたの定義ファイルのベースとして。 – Magu

+0

リンクをありがとう。私はこれを調べます。 –

関連する問題