Typescript
Skill ComeOnOliver/skillshub/skills/pproenca/dot-skills/typescript
π§ The right skill, one API call. AI agent skills registry with token-efficient skill resolution. 5,000+ skills from 500+ top repos.From the repository description
npx -y skills add ComeOnOliver/skillshub --skill typescriptAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
8.7 KB, ~2.3k tokens by cl100k_base, as published. Nobody here has run it
TypeScript Best Practices
Comprehensive performance optimization guide for TypeScript applications. Contains 45 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.
When to Apply
Reference these guidelines when:
- Configuring tsconfig.json for a new or existing project
- Writing complex type definitions or generics
- Optimizing async/await patterns and data fetching
- Organizing modules and managing imports
- Reviewing code for compilation or runtime performance
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Type System Performance | CRITICAL | type- |
| 2 | Compiler Configuration | CRITICAL | tscfg- |
| 3 | Async Patterns | HIGH | async- |
| 4 | Module Organization | HIGH | module- |
| 5 | Type Safety Patterns | MEDIUM-HIGH | safety- |
| 6 | Memory Management | MEDIUM | mem- |
| 7 | Runtime Optimization | LOW-MEDIUM | runtime- |
| 8 | Advanced Patterns | LOW | advanced- |
Table of Contents
- Type System Performance β CRITICAL
- 1.1 Add Explicit Return Types to Exported Functions β CRITICAL (30-50% faster declaration emit)
- 1.2 Avoid Deeply Nested Generic Types β CRITICAL (prevents exponential instantiation cost)
- 1.3 Avoid Large Union Types β CRITICAL (quadratic O(nΒ²) comparison cost)
- 1.4 Extract Conditional Types to Named Aliases β CRITICAL (enables compiler caching, prevents re-evaluation)
- 1.5 Limit Type Recursion Depth β HIGH (prevents exponential type expansion when applicable)
- 1.6 Prefer Interfaces Over Type Intersections β CRITICAL (2-5Γ faster type resolution)
- 1.7 Simplify Complex Mapped Types β HIGH (reduces type computation by 50-80% when applicable)
- Compiler Configuration β CRITICAL
- 2.1 Configure Include and Exclude Properly β CRITICAL (prevents scanning thousands of unnecessary files)
- 2.2 Enable Incremental Compilation β CRITICAL (50-90% faster rebuilds)
- 2.3 Enable isolatedDeclarations for Parallel Declaration Emit β CRITICAL (enables parallel .d.ts generation without type-checker)
- 2.4 Enable skipLibCheck for Faster Builds β CRITICAL (20-40% faster compilation)
- 2.5 Enable strictFunctionTypes for Faster Variance Checks β CRITICAL (enables optimized variance checking)
- 2.6 Use erasableSyntaxOnly for Node.js Native TypeScript β HIGH (prevents 100% of Node.js type-stripping runtime errors)
- 2.7 Use isolatedModules for Single-File Transpilation β CRITICAL (80-90% faster transpilation with bundlers)
- 2.8 Use Project References for Large Codebases β CRITICAL (60-80% faster incremental builds)
- Async Patterns β HIGH
- 3.1 Annotate Async Function Return Types β HIGH (prevents runtime errors, improves inference)
- 3.2 Avoid await Inside Loops β HIGH (NΓ faster for N iterations, 10 users = 10Γ improvement)
- 3.3 Avoid Unnecessary async/await β HIGH (eliminates trivial Promise wrappers and improves stack traces)
- 3.4 Defer await Until Value Is Needed β HIGH (enables implicit parallelization)
- 3.5 Use Promise.all for Independent Operations β HIGH (2-10Γ improvement in I/O-bound code)
- Module Organization β HIGH
- 4.1 Avoid Barrel File Imports β HIGH (200-800ms import cost, 30-50% larger bundles)
- 4.2 Avoid Circular Dependencies β HIGH (prevents runtime undefined errors and slow compilation)
- 4.3 Control @types Package Inclusion β HIGH (prevents type conflicts and reduces memory usage)
- 4.4 Use Dynamic Imports for Large Modules β HIGH (reduces initial bundle by 30-70%)
- 4.5 Use Type-Only Imports for Types β HIGH (eliminates runtime imports for type information)
- Type Safety Patterns β MEDIUM-HIGH
- 5.1 Enable noUncheckedIndexedAccess β MEDIUM-HIGH (prevents 100% of unchecked index access errors at compile time)
- 5.2 Enable strictNullChecks β MEDIUM-HIGH (prevents null/undefined runtime errors)
- 5.3 Prefer unknown Over any β MEDIUM-HIGH (forces type narrowing, prevents runtime errors)
- 5.4 Use Assertion Functions for Validation β MEDIUM-HIGH (reduces validation boilerplate by 50-70%)
- 5.5 Use const Assertions for Literal Types β MEDIUM-HIGH (preserves literal types, enables better inference)
- 5.6 Use Exhaustive Checks for Union Types β MEDIUM-HIGH (prevents 100% of missing case errors at compile time)
- 5.7 Use Type Guards for Runtime Type Checking β MEDIUM-HIGH (eliminates type assertions, catches errors at boundaries)
- Memory Management β MEDIUM
- 6.1 Avoid Closure Memory Leaks β MEDIUM (prevents retained references in long-lived callbacks)
- 6.2 Avoid Global State Accumulation β MEDIUM (prevents unbounded memory growth)
- 6.3 Clean Up Event Listeners β MEDIUM (prevents unbounded memory growth)
- 6.4 Clear Timers and Intervals β MEDIUM (prevents callback retention and repeated execution)
- 6.5 Use WeakMap for Object Metadata β MEDIUM (prevents memory leaks, enables automatic cleanup)
- Runtime Optimization β LOW-MEDIUM
- 7.1 Avoid Object Spread in Hot Loops β LOW-MEDIUM (reduces object allocations by NΓ)
- 7.2 Cache Property Access in Loops β LOW-MEDIUM (reduces property lookups by NΓ in hot paths)
- 7.3 Prefer Native Array Methods Over Lodash β LOW-MEDIUM (eliminates library overhead, enables tree-shaking)
- 7.4 Use for-of for Simple Iteration β LOW-MEDIUM (reduces iteration boilerplate by 30-50%)
- 7.5 Use Modern String Methods β LOW-MEDIUM (2-5Γ faster than regex for simple patterns)
- 7.6 Use Set/Map for O(1) Lookups β LOW-MEDIUM (O(n) to O(1) per lookup)
- Advanced Patterns β LOW
- 8.1 Use Branded Types for Type-Safe IDs β LOW (prevents mixing incompatible ID types)
- 8.2 Use satisfies for Type Validation with Inference β LOW (prevents property access errors, enables 100% autocomplete accuracy)
- 8.3 Use Template Literal Types for String Patterns β LOW (prevents 100% of string format errors at compile time)
References
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.