2017-08-26 94 views
0

我想創建一個小型庫作爲學習打字稿的藉口,但會發生什麼是我真的無法導入Javascript庫(node-json-equal)到我的打字稿項目。我沒有在網上找到很多解釋清楚它是如何工作的,所以我打賭你解釋我如何正確地解決問題,爲什麼我的方法不正確......以及我猜是因爲正確的外部庫沒有輸入。如何導入打字稿項目中的外部JavaScript庫

Project image

+1

您發佈的圖片看起來更像是您在使用其他工具時遇到問題。有關您的項目的更多信息將使這更容易診斷和幫助。 –

+0

@DanielRosenwasser,謝謝你的參與。 基本上我想創建一個使用TS的JS庫。它的任務是接收一個字符串,並根據字符串的內容返回一個特定的JSON對象。 需要知道的重要一點是這個字符串-JSON obj關係是1:1。所有關係都包含在一個大的JSON中(_messages_在圖像中),通過_setMessages()_從外部注入。 _setMessages()_中的第一步是檢查輸入JSON obj是否爲空。爲了檢查,我想使用一個無類型的JSON庫:_node-json-equal_。 – Giovarco

+0

我知道......我可以手動完成,但我很想了解TS的工作方式。至少我期待它使用_require()_,但它沒有。隨意問,如果你有更多的問題。 – Giovarco

回答

0

我終於找到了問題。這與我的源代碼沒有關係,但是我的dockerfile。基本上我添加了被破壞的package-lock.json,所以最後模塊沒有被下載。我解決了添加package.json的問題。

0

要與外部JS庫工作,你可以:

A)使用分型文件

有很多分型的文件就可以使用了,檢查出DefinitelyTyped準備使用定義文件列表的網頁。

如果找不到庫的定義文件,我強烈建議您自己創建一個。有關如何創建自己的定義文件的更多信息,請查看this guide

B)聲明一個變量是你的庫

通過使用你告訴編譯器不檢查類型安全的特定變量聲明的關鍵字。

declare var nodeJsonEqual: any; 

如果使用這種方法,你基本上把類型檢查這個變量,它是由你來確保有實際存在一個名爲nodeJsonEqual變量在運行時,你調用的函數具有正確的簽名。

+0

感謝您的評論。 – Giovarco

+0

我其實嘗試了第二種方法,但它不起作用。它在導入聲明之後立即執行,但不起作用。問題依然存在:(我做錯了什麼? – Giovarco

+0

因此,當你使用declare關鍵字時,你告訴編譯器該變量存在於「typescript world」之外,因此你不需要在typescript文件中導入任何東西,但它是你的工作,以確保該庫創建一個變量稱爲相同的聲明變量 – hagner

相關問題