2016-10-24 10 views
0

私たちは大部分が2.0より前に書かれた大きなTSアプリケーションを持っています。私たちはモジュールを使用せず、outfileオプションのみを使用しています。これまでの入力はglobalでしたが、typingsで提供されている入力の中には、(わかっている限り)グローバルな使用をサポートしていないものがあります。外部モジュールをグローバルとして提供するタイピングの使い方は?

たとえば、markdown-itの型を使用しようとしていますが、これはグローバル名前空間にanythingsを公開しないため、コンパイラはmarkdownit関数を見つけられません。

私はこのような状況でどのようにこの種の入力を使うべきかについて非常に混乱しています。何らかのヒントが認められるでしょう。

コード例:私はモジュールを使用していないので、

// test.ts var result = markdownit().render("*some markdown*"); <-- `markdownit` not found

私はimportにそれを試して、それは、当然の誤差を与えます。だから私は立ち往生している。

答えて

1

グローバル変数markdownitとしてmarkdown-itを使用することを前提としている場合、augments global scope(この機能は2.0で新しく追加されました)という独自のファイルで宣言できます。

これはグローバルスコープを強化し、周囲のモジュールを宣言markdown-it-global.d.ts

declare module 'markdown-it-global' { 

    import * as MarkdownIt from 'markdown-it'; 

    global { 
     var markdownit: typeof MarkdownIt; 
    } 

} 

ファイルを作成します - あなたはtyping/index.d.tsのような他のすべてのtypecsriptソースファイルと宣言とともにmarkdown-it-global.d.tsを含む場合、それはどこにでもグローバル変数markdownitが利用できるようになります。

importは、モジュールを宣言するmarkdown-it型を使用しますが、型チェックにのみ使用されます。生成されたjavascriptコードには影響せず、実際にモジュールを使用する必要はありません。

+0

私は他の選択肢がないので、私は本当にこのように使いたいです。モジュールを使用せずに何千もの行が書かれていますが、それを変換するのは難しい作業です。新しいプロジェクトでは、私は間違いなくモジュールを使うでしょう。答えをありがとう、明日試してみましょう。 –

関連する問題