80 lines
2.4 KiB
Plaintext
80 lines
2.4 KiB
Plaintext
---
|
|
title: TypeScript 6 and 7
|
|
description: "How to configure Bun's type definitions for TypeScript 6.0 and 7.0, which no longer auto-discover @types packages. Fix 'Cannot find name Bun' and other missing type errors after upgrading TypeScript."
|
|
---
|
|
|
|
TypeScript 6.0 changed how it discovers type definitions. If you've upgraded TypeScript and your editor no longer recognizes `Bun`, `Request`, or other globals from `@types/bun`, here's how to fix it.
|
|
|
|
## What changed
|
|
|
|
Starting in TypeScript 6.0, the `types` field in `compilerOptions` defaults to an empty array instead of including all `@types/*` packages. You now need to explicitly list the type packages you use.
|
|
|
|
## Add `"types": ["bun"]` to your tsconfig
|
|
|
|
In your `tsconfig.json`, add `"types": ["bun"]` to `compilerOptions`:
|
|
|
|
```jsonc tsconfig.json icon="file-json"
|
|
{
|
|
"compilerOptions": {
|
|
"types": ["bun"], // [!code ++]
|
|
},
|
|
}
|
|
```
|
|
|
|
The `types` array tells TypeScript to load type definitions from `@types/bun`. If you use other `@types/*` packages, include them too:
|
|
|
|
```jsonc tsconfig.json icon="file-json"
|
|
{
|
|
"compilerOptions": {
|
|
"types": ["bun", "react"],
|
|
},
|
|
}
|
|
```
|
|
|
|
You still need `@types/bun` installed. The `types` option tells TypeScript _which_ packages to include, but the package itself must exist in `node_modules`:
|
|
|
|
```sh terminal icon="terminal"
|
|
bun add -d @types/bun
|
|
```
|
|
|
|
## Full recommended tsconfig.json
|
|
|
|
Here's the full recommended `tsconfig.json` for a Bun project using TypeScript 6.0 or later:
|
|
|
|
```jsonc 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,
|
|
},
|
|
}
|
|
```
|
|
|
|
## Does this apply to TypeScript 7?
|
|
|
|
Yes. TypeScript 7 carries forward the same default. If you're upgrading directly from TypeScript 5 to 7, the same fix applies — add `"types": ["bun"]` to your `compilerOptions`.
|