typescript-patterns

Advanced TypeScript patterns for strict mode development. Covers type utilities (Pick, Omit, Partial, Record, Awaited), generics with constraints and inference, type guards and narrowing, discriminated unions, conditional and mapped types, template literal types, const assertions, satisfies operator, module patterns, and modern JavaScript idioms (eslint-plugin-unicorn). Use when building type-safe APIs, preventing runtime errors through types, working with strict TypeScript configuration, debugging complex type errors, or enforcing modern JS idioms. Use for generics, type guards, utility types, strict mode, type inference, narrowing, type safety, const assertions, satisfies, module augmentation, unicorn, for-of, modern-js.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "typescript-patterns" with this command: npx skills add oakoss/agent-skills/oakoss-agent-skills-typescript-patterns

TypeScript Patterns

Overview

Advanced TypeScript patterns that use the type system to prevent runtime errors. Focuses on strict mode TypeScript with patterns for type inference, narrowing, and compile-time validation. Not a beginner tutorial.

When to use: Building type-safe APIs, complex data transformations, library authoring, preventing runtime errors through types, working with strict mode flags.

When NOT to use: Learning TypeScript basics (primitives, interfaces, classes), JavaScript-to-TypeScript migration guidance, tooling setup, or build configuration.

Quick Reference

PatternAPIKey Points
Utility typesPick<T, K>, Omit<T, K>Extract or exclude properties
Partial/RequiredPartial<T>, Required<T>Make properties optional or required
Record typeRecord<K, V>Object with known keys
Awaited typeAwaited<T>Unwrap Promise return types
ReturnType/ParametersReturnType<F>, Parameters<F>Extract function types
Generic constraints<T extends Type>Constrain generic parameters
Type inferencetype Inferred = typeof valueLet TypeScript infer from values
Type guardstypeof, instanceof, inNarrow types at runtime
Custom type guards(x): x is TypeUser-defined narrowing functions
Inferred predicates(x) => x !== nullAuto-inferred type predicate filters
Discriminated unionsUnion with literal type propertyExhaustive pattern matching
Conditional typesT extends U ? X : YType-level conditionals
Mapped types{ [K in keyof T]: T[K] }Transform all properties
Template literals`${A}-${B}`String literal type manipulation
Const assertionsas constNarrowest possible literal types
Satisfies operatorvalue satisfies TypeType check without widening
NoInfer utilityNoInfer<T>Prevent inference from a position
Const type params<const T extends Type>Narrow inference without as const
Inline type importsimport { type User }Import types explicitly
Module augmentationdeclare module 'lib' { ... }Extend third-party types
Assertion functionsfunction assert(x): asserts x is TThrow if type guard fails

Common Mistakes

MistakeCorrect Pattern
Using any without justificationUse unknown and narrow with type guards
Manual type assertions everywhereLet inference work, type function returns
Destructuring before type narrowingKeep object intact for discriminated unions
Index access without undefined checkEnable noUncheckedIndexedAccess
as Type casting unsafe valuesUse satisfies Type to preserve narrow types
Inline objects in genericsExtract to const or type alias
Omitting extends in constraintsAlways constrain generics when possible
Using Parameters<typeof fn>[0]Type the parameter directly in function
Not handling union exhaustivenessUse never checks in switch/if-else
value as const satisfies TypeUse satisfies Type then as const if needed

Delegation

  • Pattern discovery: Use Explore agent to find existing patterns in codebase
  • Type error debugging: Use Task agent for multi-step type resolution
  • Code review: Delegate to code-reviewer skill for type safety audit

References

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

github-cli

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

tanstack-cli

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

tanstack-devtools

No summary provided by upstream source.

Repository SourceNeeds Review