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.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"` 的导入。

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