Files
bun-src/docs/typescript.mdx
T
2026-08-27 21:09:14 +00:00

60 lines
1.6 KiB
Plaintext

---
title: TypeScript
description: Using TypeScript with Bun, including type definitions and compiler options
---
To get TypeScript definitions for Bun's built-in APIs, install `@types/bun`.
```zsh terminal icon="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.
```json tsconfig.json icon="file-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.
```sh terminal icon="terminal"
bun init
```
## 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](/typescript-6).