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!"