Bun

TypeScript

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.jsoncompilerOptions.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" 的匯入。

index.ts
data.ts
index.ts
import { foo } from "data";
console.log(foo); // => "Hello world!"
data.ts
export const foo = "Hello world!"