在這裡我們學習如何撰寫高品質的 Typescript 聲明檔。因此,您正在使用 ReactJS 進行編碼並想要匯入 SVG 文件,但您的 IDE/tsc 正在抱怨。
現在是時候轉向 Stackoverflow 尋求快速複製貼上解決方案了。
但是讓我們堅持一下並嘗試理解這些文件以及它們對我們的作用。
在 TS/JS 中,我們有許多方法來模組化用 TS/JS 編寫的應用程式。目前佔據主導地位的是 ESM(又稱 ES 模組、ES6 模組)。我們通常透過它們的語法來了解它們:
因此,為了回答最初的問題,在符合 ECMAScript 2015 的 TS/JS 中,任何包含 頂層導入或導出的文件都被視為模組。
如果沒有任何頂層匯入或匯出:
不再有全域命名空間污染。這意味著:
在 TS 模組中,解析是從 import 或 require 語句中取得字串,並決定該字串引用哪個檔案的過程。
在 TS 我們有兩種策略:
順便說一句,我們有很多地方可能會有意或無意地更改它(moduleResolution、baseUrl、paths、rootDirs)。
例如,如果您正在建立應用程式以利用 ESM(編譯版本正在使用 ESM),那麼您需要在compilerOptions.module 中選擇「NodeNext」。
注意:如果在該目錄中你有一個 package.json。然後 TS 使用它的 main 和 types 來取得它的類型。
在這裡了解更多。
所以基本上它會將導入重新映射到查找位置*s* 相對於 baseUrl(如果設定),否則映射到 tsconfig 檔案。最常見的用例是路徑別名:
注意
這對運行時來說沒有任何意義。這意味著您親愛的捆綁器或編譯器需要注意將它們正確地捆綁在一起。如果你的路徑指向不存在的地方,那麼你的應用程式在 NodeJS 執行時將會崩潰。
提示
除此之外,您還可以利用 package.json 的導入(又稱子路徑導入)。
要影響發出的 JS 輸出,我們可以修改:
所以我們想要匯入 .graphql 檔案或其他副檔名,TS 不知道它們是什麼樣的(它無法解析它們的類型)。現在 TS 知道匯入的 svg、graphql 或其他檔案會是什麼樣子。
參考。
裸說明符:導入語句中的模組名稱,不是相對或絕對路徑。這些通常是專案的 node_modules 或其他配置位置中的套件的名稱。 ↩
以上是TS 中的模組聲明的詳細內容。更多資訊請關注PHP中文網其他相關文章!