2016-08-30 60 views
0

我正試圖將一個Javascript項目移植到Typescript。我有一個依賴命名,如:@myscope/utils何處/如何添加d.ts作爲私有的,有限範圍的npm模塊?

從這一個文件導入到TS文件,如下所示:

import date = require('@myscope/utils/date'); 

當我嘗試編譯此我得到以下錯誤:

src/subfolder/something.ts(12,23): error TS2307: Cannot find module '@myscope/utils/date'. 

如何添加我自己的類型這樣的私人模塊?

回答

2

我自己設法解決了這個問題。 我提到的信息writing declaration files

的關鍵在於讓模塊解決的是聲明模塊封裝的完整路徑的名稱。我爲該模塊創建了一個index.d.ts文件,我將其添加到我的files部分tsconfig.json

該文件包含以下聲明:

declare namespace date { 
    function now(): number; 
} 

declare module "@myscope/utils/date" { 
    export = date; 
} 

雖然不是必需的,我喜歡的結構分型我進口呢。在我移植了應用程序的其餘部分後,我可能會稍後簡化。

我創建下列文件:

mytypings/index.d.ts 
mytypings/modules/@myscope/utils/index.d.ts 

注意存在utils的路徑沒有日期部分。

mytypings/index.d.ts包含參考路徑mytypings/modules/@myscope/utils/index.d.ts,然後被添加到tsconfig.json的部分。

我的計劃是以相同的方式添加其他庫。

相關問題