要安装 Bun 内置 API 的 TypeScript 定义,请安装bun-types。
$ bun add -d bun-types # 开发依赖
然后在您的tsconfig.json中的compilerOptions.types中包括"bun-types":
{
"compilerOptions": {
+ "types": ["bun-types"]
}
}
此时,您应该能够在 TypeScript 文件中引用Bun全局对象,而不会在编辑器中看到错误。
console.log(Bun.version);
建议的compilerOptions
Bun 支持顶层等待(top-level await)、JSX 和扩展的.ts导入,这些是 TypeScript 默认不允许的。下面是 Bun 项目的一组建议compilerOptions,这样您就可以在不受 TypeScript 编译器警告的情况下使用这些功能。
{
"compilerOptions": {
// 添加Bun类型定义
"types": ["bun-types"],
// 启用最新特性
"lib": ["esnext"],
"module": "esnext",
"target": "esnext",
// 如果使用TS 5.x+
"moduleResolution": "bundler",
"noEmit": true,
"allowImportingTsExtensions": true,
"moduleDetection": "force",
// 如果使用TS 4.x或更早版本
// "moduleResolution": "nodenext",
"jsx": "react-jsx", // 支持JSX
"allowJs": true, // 允许从.ts中导入.js
"esModuleInterop": true, // 允许为CommonJS模块进行默认导入
// 最佳实践
"strict": true,
"forceConsistentCasingInFileNames": true,
"skipLibCheck": true,
"composite": true,
"downlevelIteration": true,
"allowSyntheticDefaultImports": true
}
}
如果您在新目录中运行bun init,则会为您生成此tsconfig.json。
$ bun init
DOM 类型
不幸的是,设置"types"的值意味着 TypeScript 将忽略其他全局类型定义,包括lib: ["dom"]。如果您需要将 DOM 类型添加到项目中,请在项目中的任何 TypeScript 文件顶部添加以下三斜杠指令。
/// <reference lib="dom" />
/// <reference lib="dom.iterable" />