Skip to main content

typescript-strict

TypeScript strict mode: tsconfig.json, strict flags, Bundler/NodeNext moduleResolution, verbatimModuleSyntax. Use when setting up TS or migrating to stricter type safety.

Informações da origem

Repositório
laurigates/claude-plugins
Última atividade na origem
3 de setembro de 2026 às 06:51
Idioma detectado do SKILL.md
inglês
Estrelas
58
Forks
6

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
2 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
created
2025-12-16T00:00:00.000Z
modified
2026-07-28T00:00:00.000Z
reviewed
2025-12-16T00:00:00.000Z
name
typescript-strict
description
TypeScript strict mode: tsconfig.json, strict flags, Bundler/NodeNext moduleResolution, verbatimModuleSyntax. Use when setting up TS or migrating to stricter type safety.
user-invocable
false
allowed-tools
Glob, Grep, Read, Bash, Edit, Write, TodoWrite, WebFetch, WebSearch
# TypeScript Strict Mode Modern TypeScript configuration with strict type checking for maximum safety and developer experience. This guide focuses on TypeScript 5.x best practices for 2025. ## Core Expertise **What is Strict Mode?** - **Type safety**: Catch more bugs at compile time - **Better IDE experience**: Improved autocomplete and refactoring - **Maintainability**: Self-documenting code with explicit types - **Modern defaults**: Align with current TypeScript best practices **Key Capabilities** - Strict null checking - Strict function types - No implicit any - No unchecked indexed access - Proper module resolution - Modern import/export syntax enforcement ## Recommended tsconfig.json (2025) ### Minimal Production Setup ```json { "compilerOptions": { // Type Checking "strict": true, "noUncheckedIndexedAccess": true, "noImplicitOverride": true, "noPropertyAccessFromIndexSignature": true, "noFallthroughCasesInSwitch": true, "noUnusedLocals": true, "noUnusedParameters": true, // Modules "module": "ESNext", "moduleResolution": "Bundler", "resolveJsonModule": true, "allowSyntheticDefaultImports": true, "esModuleInterop": false, "verbatimModuleSyntax": true, // Emit "target": "ES2022", "lib": ["ES2023", "DOM", "DOM.Iterable"], "outDir": "dist", "declaration": true, "declarationMap": true, "sourceMap": true, "removeComments": false, "noEmit": false, // Interop "isolatedModules": true, "allowJs": false, "checkJs": false, "skipLibCheck": true, "forceConsistentCasingInFileNames": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist", "build"] } ``` ## Strict Flags Explained ### `strict: true` (Umbrella Flag) Enables all strict type-checking options: ```json { "strict": true // Equivalent to: // "noImplicitAny": true, // "strictNullChecks": true, // "strictFunctionTypes": true, // "strictBindCallApply": true, // "strictPropertyInitialization": true, // "noImplicitThis": true, // "alwaysStrict": true } ``` **Always enable `strict: true` for new projects.** ### Additional Strict Flags (Recommended for 2025) | Flag | Purpose | |------|---------| | `noUncheckedIndexedAccess` | Index signatures return `T \| undefined` instead of `T` | | `noImplicitOverride` | Require `override` keyword for overridden methods | | `noPropertyAccessFromIndexSignature` | Force bracket notation for index signatures | | `noFallthroughCasesInSwitch` | Prevent fallthrough in switch statements | | `exactOptionalPropertyTypes` | Optional properties cannot be set to `undefined` explicitly | ### `noUncheckedIndexedAccess` (Essential) ```typescript // With noUncheckedIndexedAccess const users: Record<string, User> = {}; const user = users['john']; // Type: User | undefined (correct - must check before use) if (user) { console.log(user.name); // Type narrowed to User } ``` **Always enable this flag to prevent runtime errors.** ## Module Resolution ### Choosing a Strategy | Strategy | Use For | Extensions Required | |----------|---------|---------------------| | `Bundler` | Vite, Webpack, Bun projects | No | | `NodeNext` | Node.js libraries and servers | Yes (`.js`) | ### `moduleResolution: "Bundler"` (Vite/Bun) ```json { "compilerOptions": { "module": "ESNext", "moduleResolution": "Bundler" } } ``` - No file extensions required in imports - JSON imports without assertions - Package.json `exports` field support ### `moduleResolution: "NodeNext"` (Node.js) ```json { "compilerOptions": { "module": "NodeNext", "moduleResolution": "NodeNext" } } ``` - Respects package.json `type: "module"` - Requires explicit `.js` extensions (even for `.ts` files) - Supports conditional exports ## verbatimModuleSyntax (Recommended for 2025) Prevents TypeScript from rewriting imports/exports. ```json { "compilerOptions": { "verbatimModuleSyntax": true } } ``` ```typescript // Error: 'User' is a type and must be imported with 'import type' import { User } from './types'; // Correct import type { User } from './types'; // Correct (mixed import) import { fetchUser, type User } from './api'; ``` **Replaces** deprecated `importsNotUsedAsValues` and `preserveValueImports`. ## Agentic Optimizations | Context | Command | |---------|---------| | Check errors | `bunx tsc --noEmit` | | Check single file | `bunx tsc --noEmit src/utils.ts` | | Show config | `bunx tsc --showConfig` | | Check module resolution | `bunx tsc --showConfig \| grep moduleResolution` | ## Quick Reference ### Recommended Flags | Flag | Value | Category | |------|-------|----------| | `strict` | `true` | Type Checking | | `noUncheckedIndexedAccess` | `true` | Type Checking | | `noImplicitOverride` | `true` | Type Checking | | `noPropertyAccessFromIndexSignature` | `true` | Type Checking | | `noFallthroughCasesInSwitch` | `true` | Type Checking | | `module` | `ESNext` / `NodeNext` | Modules | | `moduleResolution` | `Bundler` / `NodeNext` | Modules | | `verbatimModuleSyntax` | `true` | Modules | | `target` | `ES2022` | Emit | | `isolatedModules` | `true` | Interop | | `skipLibCheck` | `true` | Interop | For detailed examples, advanced patterns, and best practices, see [REFERENCE.md](REFERENCE.md). ## References - TypeScript Handbook: https://www.typescriptlang.org/docs/handbook/intro.html - TSConfig Reference: https://www.typescriptlang.org/tsconfig - Strict Mode Guide: https://www.typescriptlang.org/tsconfig#strict - Module Resolution: https://www.typescriptlang.org/docs/handbook/module-resolution.html - Best Practices: https://www.typescriptlang.org/docs/handbook/declaration-files/do-s-and-don-ts.html
Ver no GitHub