是否可以從 JS 庫生成 TypeScript 宣告檔案?


如果您曾經在 TypeScript 專案中使用過 JavaScript 庫,您可能遇到過需要這些庫的型別資訊的情況。TypeScript 宣告檔案(以 .d.ts 擴充套件名錶示)為 JavaScript 程式碼提供型別資訊,從而在 TypeScript 專案中實現更好的靜態型別檢查和編輯器支援。

在本教程中,我們將探討從 JavaScript 庫生成 TypeScript 宣告檔案的不同場景和方法。我們將涵蓋以下場景:為現有 JavaScript 庫生成宣告檔案、為自己的 JavaScript 程式碼生成宣告檔案以及利用 dts-gen 和 tsc 等工具自動生成宣告檔案。

為現有 JavaScript 庫生成宣告檔案

方法 1:手動宣告檔案

為現有 JavaScript 庫生成宣告檔案的一種方法是手動建立它們。當庫未提供其宣告檔案時,此方法很有用。

語法

要建立手動宣告檔案,您需要遵循以下語法:

declare module 'library-name' {
   // Declare the library's exports and types here
}

示例 1

假設我們想要為流行的 JavaScript 庫 lodash 建立一個宣告檔案。以下是 lodash.d.ts 宣告檔案可能的樣子:

declare module 'lodash' {
   export function uniq≷T&g;(array: T[]): T[];
   export function compact≷T&g;(array: T[]): T[];
}

在此示例中,我們聲明瞭 lodash 庫中的兩個函式 uniq 和 compact,並指定了輸入和返回型別。

示例 2

讓我們考慮一個場景,我們想要為 JavaScript 庫 axios 建立一個宣告檔案。此庫提供了一個簡單而強大的 API 用於發出 HTTP 請求。

建立一個名為 axios.d.ts 的檔案並新增以下內容:

declare module 'axios' {
   export function get(url: string): Promise&g;any≷;
   export function post(url: string, data: any): Promise≷any&g;;
}

在此示例中,我們聲明瞭兩個函式 get 和 post,它們分別使用 axios 發出 HTTP GET 和 POST 請求。

方法 2:宣告檔案生成器

為現有 JavaScript 庫生成宣告檔案的另一種方法是利用專門為此目的設計的工具。其中一個工具是 dts-gen,它是 TypeScript 提供的一個命令列工具。

要使用 dts-gen,請按照以下步驟操作:

  • 透過執行以下命令全域性安裝 dts-gen:

npm install -g dts-gen
  • 導航到要為其生成宣告檔案的 JavaScript 庫的根資料夾。

  • 執行 dts-gen 後跟庫的入口檔案。例如:

dts-gen -m library-name -o

此命令在當前目錄中生成一個名為 library-name.d.ts 的宣告檔案。

示例

假設我們想要為 JavaScript 庫 moment.js 生成一個宣告檔案。此庫廣泛用於解析、操作和格式化日期和時間。

要為 moment.js 生成宣告檔案,請按照以下步驟操作:

  • 透過執行以下命令全域性安裝 dts-gen:

npm install -g dts-gen
  • 導航到 moment.js 庫的根資料夾。

  • 執行以下命令以生成宣告檔案:

dts-gen -m moment -o

此命令在當前目錄中生成一個名為 `moment.d.ts` 的宣告檔案。

現在,您擁有了一個提供 moment.js 庫型別資訊的宣告檔案。

為自己的 JavaScript 程式碼生成宣告檔案

如果您有要轉換為 TypeScript 的 JavaScript 程式碼,生成宣告檔案可能是一個有用的起點。TypeScript 提供了一個名為 tsc 的實用程式,它可以從 JavaScript 程式碼自動生成宣告檔案。

要使用 tsc 生成宣告檔案,請按照以下步驟操作:

  • 透過執行以下命令全域性安裝 TypeScript:

npm install -g typescript
  • 在 JavaScript 專案的根目錄中建立一個 tsconfig.json 檔案,其中包含以下配置:

{
   "compilerOptions": {
      "allowJs": true,
      "declaration": true,
      "outDir": "dist"
   },
   "include": ["src"]
}

allowJs 選項允許 TypeScript 編譯 JavaScript 檔案,declaration 選項啟用宣告檔案生成,outDir 選項指定生成的宣告檔案的輸出目錄。

  • 執行以下命令以為您 JavaScript 程式碼生成宣告檔案:

tsc -p tsconfig.json

此命令呼叫 TypeScript 編譯器 (tsc) 並指示它使用 tsconfig.json 檔案進行配置。然後,編譯器將根據 tsconfig.json 檔案的 include 部分中指定的 JavaScript 程式碼生成宣告檔案。

示例

假設您有一個名為 utils.js 的 JavaScript 檔案,其中包含實用程式函式。您想要為這些函式生成一個宣告檔案。

  • 透過執行以下命令全域性安裝 TypeScript:

npm install -g typescript
  • 在根目錄中建立一個 tsconfig.json 檔案,其中包含以下配置:

{
   "compilerOptions": {
      "allowJs": true,
      "declaration": true,
      "outDir": "dist"
   },
   "include": ["src"]
}
  • 執行以下命令以生成宣告檔案:

tsc -p tsconfig.json

此命令編譯 JavaScript 程式碼並在指定的輸出目錄(此示例中為 dist)中生成相應的宣告檔案。

執行該命令後,您將在 dist 資料夾中找到一個 utils.d.ts 檔案,其中包含為 utils.js 程式碼生成的 TypeScript 宣告檔案。

結論

在本教程中,我們探討了從 JavaScript 庫生成 TypeScript 宣告檔案的不同方法。我們介紹了手動建立宣告檔案以及使用 dts-gen 和 tsc 等工具來自動化生成過程。透過利用這些方法,您可以提高 TypeScript 專案的型別安全性並增強可維護性,從而實現更順暢的協作並更好地檢測錯誤。

請記住,隨著 JavaScript 庫或程式碼的演變,定期更新您的宣告檔案以確保型別資訊的準確性。生成 TypeScript 宣告檔案使您能夠在 TypeScript 專案中有效地使用 JavaScript 庫,提供更好的程式碼編輯器支援並儘早捕獲潛在錯誤。

更新於: 2023-08-21

352 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.