Runtime
Bundler
Package Manager
Test Runner
Guides
Reference
Blog
Install Bun
Runtime Get Started

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

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.