{ "compilerOptions": { // Most non-library projects don't need to emit declarations. // So we add this option by default to make the config more friendly to most users. "noEmit": true, // As long as you are using a build tool, we recommend you to author and ship in ES modules. // Even if you are targeting Node.js, because // - `CommonJS` is too outdated // - the ecosystem hasn't fully caught up with `Node16`/`NodeNext` // This recommendation includes environments like Vitest, Vite Config File, Vite SSR, etc. "module": "ESNext", // We expect users to use bundlers. // So here we enable some resolution features that are only available in bundlers. "moduleResolution": "bundler", "resolveJsonModule": true, "allowImportingTsExtensions": true, // Even files without `import` or `export` are treated as modules. // It helps to avoid mysterious errors such as `Cannot redeclare block-scoped variable 'name`. // https://www.totaltypescript.com/cannot-redeclare-block-scoped-variable#solution-3-your-module-isnt-a-module "moduleDetection": "force", // Required in Vue projects "jsx": "preserve", "jsxImportSource": "vue", // `"noImplicitThis": true` is part of `strict` // Added again here in case some users decide to disable `strict`. // This enables stricter inference for data properties on `this`. "noImplicitThis": true, "strict": true, // See // These 2 options are also part of the recommended tsconfig as of TS 5.9 "noUncheckedIndexedAccess": true, // Commented out for now. It's hard to land in the current ecosystem. // Needs more consensus before moving forward. // "exactOptionalPropertyTypes": true, // // Any imports or exports without a type modifier are left around. This is important for `