簡體   English   中英

沒有定義的npm包的Typescript導入

[英]Typescript import for an npm package without a definition

我有一個npm軟件包(@ salesforce / canvas-js-sdk),該軟件包沒有Typescript定義文件。 我正在使用React,所以我正在使用“ import from”語法導入依賴關系。 Visual Studio似乎不喜歡該模塊沒有定義文件。 同樣,該模塊應該在名為“ Sfdc”的“窗口”對象上公開一個屬性。 如何在不修改npm軟件包的情況下為其定義文件?


我一直在嘗試:

這就是我當前的import語句的樣子。

在此處輸入圖片說明

然后,我為模塊定義了一個非常簡單的定義,如下所示。

在此處輸入圖片說明

這解決了找不到模塊定義的編譯錯誤。 但是,如果我嘗試像示例中那樣使用Sfdc對象,它將無法正常工作。

這是來自文檔的圖片,說明如何將庫與純JavaScript結合使用。 在此處輸入圖片說明

但是,如果我復制並粘貼該代碼,則在運行時該代碼對我不起作用。 相反,如果使用,我只能獲得對Sfdc對象的引用

在此處輸入圖片說明

因為該程序包是基於全局對象構建的,所以我需要簡化import語句。 我不能僅僅排除導入,因為包裝代碼不會包含在頁面中。 在此處輸入圖片說明

然后,我必須更改d.ts文件以全局聲明Sfdc對象。 在此處輸入圖片說明

鑒於該模塊實際上不是模塊(它是一個公開的全局對象),您將希望您的自定義類型與之匹配。

嘗試編寫declare namespace Sfdc而不是declare module '@salesforce/canvas-js-sdk'

然后,您應該能夠刪除import語句並直接從代碼中的任何位置訪問全局Sfdc變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM