RuntimePackage ManagerBundlerTest RunnerLinterFormatterGuidesReferenceBlogFeedback

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.