是否可以從 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 庫,提供更好的程式碼編輯器支援並儘早捕獲潛在錯誤。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP