TypeScript
Using TypeScript with Bun, including type definitions and compiler options
To get TypeScript definitions for Bun's built-in APIs, install @types/bun.
terminal
bun add -d @types/bun # dev dependency
You can now reference the Bun global in your TypeScript files without errors in your editor.
Suggested compilerOptions
Bun supports top-level await, JSX, and imports with .ts extensions, which TypeScript doesn't allow by default. Use these compilerOptions in a Bun project so TypeScript doesn't warn about those features.
tsconfig.json
{
"compilerOptions": {
// Environment setup & latest features
"lib": ["ESNext"],
"target": "ESNext",
"module": "Preserve",
"moduleDetection": "force",
"jsx": "react-jsx",
"allowJs": true,
"types": ["bun"],
// Bundler mode
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"verbatimModuleSyntax": true,
"noEmit": true,
// Best practices
"strict": true,
"skipLibCheck": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedIndexedAccess": true,
"noImplicitOverride": true,
// Some stricter flags (disabled by default)
"noUnusedLocals": false,
"noUnusedParameters": false,
"noPropertyAccessFromIndexSignature": false
}
}
Running bun init in a new directory generates this tsconfig.json for you.
terminal
bun init
Type checking
Bun runs TypeScript files without checking their types. Use bun check to type check your project.
terminal
bun check
TypeScript 6 and 7
If you're using TypeScript 6.0 or later, you also need "types": ["bun"] in your compilerOptions. See TypeScript 6 and 7.