2016-04-13 47 views
3

我正在嘗試編寫使用現有JS庫的TypeScript代碼。問題是,該庫在運行時基於傳遞到include()「路徑」上提供一個設施,include(),用於裝載JS類:如何忽略TypeScript中的一行,但將其複製到JS?

變種LibraryClass =包括(「路徑與班級」);

但打字稿在編譯時需要這些類的定義......我可以評論中的.ts整個include線(與var LibraryClass一起),並提供類定義常用的打字稿的方式讓我的代碼編譯,通過/// <reference path="someFile.ts"/>或者通過爲這個庫創建.d.ts環境定義文件。

但我無法弄清楚如何忽略include()通話中的.ts,但讓他們在得到的.js文件...

可能是它可能有.TS和.js不同的變量名稱?如果我可以,例如,有

var LibraryClassTS = include('path-to-class');

在打字稿但是,不知何故,它編譯成

變種LibraryClass =包括( '路徑與班級');

如果JavaScript中,這將解決我的問題:我會在.TS空LibraryClassTS類(而LibraryClass接口定義從.d.ts加載)和運行時加載LibraryClass在.js文件。

回答

3

如果這是你使用include然後將這個在該文件的頂部唯一的地方:

declare var include: any; 

如果你更多的在整個應用程序使用它考慮將其移動到.d.ts文件

但是,如果你在多個項目中使用它,也許你應該考慮爲它創建一個更完整的規範,並將其提交給絕對類型的回購。

+0

的問題不在於'include',我已經在.d.ts定義,但與它創建的類,'LibraryClass'。我有一個來自另一個.d.ts的'LibraryClass'的定義,但'var LibraryClass = ...'創建了一個不同的本地定義... – Boris

0

這裏就是我所做的抑制.TS的include()線,但允許它可以在.js:

1)在打字稿碼,註釋每個include()符合////,使打字稿將其視爲一個註釋(和將這個「評論」複製到.js)。

2)製作了一個後處理腳本,用於匹配/^(\s*\/{4}).+=\s*\binclude\b\s*\(.*\)/正則表達式的行的.js文件(與.ts對應),並刪除////

3)將此腳本掛接到IntelliJ/WebStorm中的File Watchers插件,以便在每次TypeScript構建後自動調用它。

-1

這可以幫助請查看:/// TS_IGNORE 讓:字符串= 1 :)

+0

你好,請給你的答案添加一些解釋,作爲一行答案不適合SO。 – Chaithanya

相關問題