我有一箇舊的打字稿項目,它使用處理.d.ts文件的/typings/tsd.json方法,它還使用Typescript的module
關鍵字將源代碼編譯爲JavaScript的IIFE模塊模式。 tsconfig.json中的模塊設置(commonjs/amd/etc)被該關鍵字忽略。如何混合環境和非環境打字稿定義文件
對於演示,我加入到這個項目當中使用的import
和export
關鍵字比較典型的方法有SystemJS模塊加載一些較新的打字稿代碼,與.d.ts文件/ node_modules/@類型/。
一些咕嘟咕嘟/ SystemJS體操後,這一切都一起工作在運行時,我的軌道上打我的最後期限。但是我在編譯時遇到了一個我想解決的情況。
當我修改舊的代碼使用來自新代碼的類(模型),我想舊代碼來了解新代碼的.d.ts。所以我添加到舊代碼的文件/// <reference path="../../newercode/feature4/models/NewerModels.d.ts"/>
的頂部。 (或者,我把相同的行放在tsd.d.ts中,但我得到了相同的結果。)
編譯器抱怨我的舊代碼「已經或正在使用私有名'NewModel'」。
Inside NewerModels.d.ts import
和export
關鍵字仍然存在,而.d.ts文件中沒有任何文件已經在/ typings /中使用這些關鍵字。這些關鍵字是虛假編譯器錯誤的罪魁禍首。
遺留項目希望環境.d.ts文件,新的代碼生成非環境。
有什麼我可以做的嗎?
我建議不要繼續使用'tsd',遷移使用'@types'。你應該能夠一次完成。 – unional
您獲取包的.d.ts文件根據您從何處獲取而有所不同。如果我這樣做了,那麼所有的.d.ts文件都會導入/導出關鍵字,因此沒有一個遺留代碼可以編譯。 –
從'@ types'得到的新文件應該有相同的語法。原始庫仍然是相同的CommonJS庫(除非發生變化,那麼您需要處理版本控制)。 'tsd'從DefinitelyTyped獲取文件,與'@ types'相同。 TS團隊做了合理的工作並轉換格式。試試看看它是否有效。 – unional