2016-10-24 25 views
0

我們有一個大型的TS應用程序,主要是在2.0之前編寫的。我們沒有使用模塊,但只有outfile選項。到目前爲止,我們一直使用global類型,但現在typings提供的一些類型不支持全球使用(據我所知)。如何使用提供外部模塊作爲全局的打字?

例如,我現在試圖使用markdown-it的類型,它不向全局名稱空間公開任何內容,因此編譯器找不到markdownit函數。

我很困惑我們應該如何在這些情況下使用這些類型,任何提示將不勝感激。

示例代碼:

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

當我嘗試import它,它給了當然的錯誤,因爲我沒有使用的模塊。所以我卡住了。

回答

1

假設你真的想使用markdown-它作爲全局變量markdownit,你可以在你自己的文件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; 
    } 

} 

此聲明,增強了全球範圍內的環境模塊 - 如果包括markdown-it-global.d.ts與所有其他typecsript源文件和聲明一樣typing/index.d.ts在一起,就會使全局變量markdownit隨處可見。

它內部的import使用markdown-它聲明一個模塊的類型,但它只會用於類型檢查,它不會對生成的javascript代碼有任何影響,實際上並不需要它使用模塊。

+0

我真的想這樣使用它,因爲我沒有別的選擇。我們有數千行不使用模塊編寫的代碼,這是一項艱鉅的工作,無法承受。在一個新項目中,我肯定會使用模塊。謝謝你的回答,明天再試。 –

相關問題