Bun 將 TypeScript 視為一級公民。
注意 — 若要為 Bun API(例如 Bun
全域變數)新增類型宣告,請遵循 簡介 > TypeScript 中的說明。此頁面說明 Bun 執行時期如何執行 TypeScript 程式碼。
執行 .ts
檔案
Bun 可以直接執行 .ts
和 .tsx
檔案,就像執行原生的 JavaScript 一樣,不需要額外的設定。如果您匯入 .ts
或 .tsx
檔案(或匯入匯出這些檔案的 npm
模組),Bun 會在內部將其轉譯成 JavaScript,然後執行該檔案。
注意 — 與其他建置工具類似,Bun 不會檢查檔案的類型。如果您希望偵測靜態類型錯誤,請使用 tsc
(官方 TypeScript CLI)。
是否仍然需要轉譯? — 由於 Bun 可以直接執行 TypeScript,您可能不需要將 TypeScript 轉譯為程式碼才能在生產環境中執行。Bun 會在內部轉譯它執行的每個檔案(包括 .js
和 .ts
),因此直接執行 .ts/.tsx
原始檔的額外負擔可以忽略不計。
話雖如此,如果您將 Bun 用作開發工具,但仍以 Node.js 或瀏覽器為生產環境目標,則仍然需要轉譯。
路徑對應
在解析模組時,Bun 的執行時間會尊重在 tsconfig.json
中 compilerOptions.paths
中定義的路徑對應。沒有其他執行時間會這樣做。
考慮以下 tsconfig.json
。
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"data": ["./data.ts"]
}
}
}
Bun 會使用 baseUrl
解析模組路徑。
// resolves to ./src/components/Button.tsx
import { Button } from "components/Button.tsx";
Bun 也可以正確解析從 "data"
的匯入。
import { foo } from "data";
console.log(foo); // => "Hello world!"
export const foo = "Hello world!"