TypeScript - tsconfig Deep Dive

Strictness

  • strict: Enables all strict options.
  • noImplicitAny, strictNullChecks, exactOptionalPropertyTypes, noUncheckedIndexedAccess

Module & Target

  • target: JS language level to emit (e.g., ES2020).
  • module: ESM/CJS/ESNext; bundlers often prefer ESNext.
  • moduleResolution: bundler, node, or nodenext.

JSX

  • jsx: react-jsx, react-jsxdev, or preserve.

Emit & Declarations

  • declaration, declarationMap, sourceMap
  • outDir, rootDir, removeComments

Project Layout

  • baseUrl & paths for import aliases
  • composite & references for multi-project builds
  • incremental & tsBuildInfoFile for faster rebuilds

Example tsconfig

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ESNext",
    "moduleResolution": "bundler",
    "strict": true,
    "noUncheckedIndexedAccess": true,
    "exactOptionalPropertyTypes": true,
    "declaration": true,
    "declarationMap": true,
    "sourceMap": true,
    "outDir": "dist",
    "rootDir": "src",
    "baseUrl": ".",
    "paths": { "@/*": ["src/*"] }
  },
  "include": ["src"],
  "exclude": ["dist", "node_modules"]
}