Skillshub TypeScript Language Patterns

Modern TypeScript standards for type safety and maintainability. Use when working with types, interfaces, generics, enums, unions, or tsconfig settings.

install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/HoangNguyen0403/agent-skills-standard/language" ~/.claude/skills/comeonoliver-skillshub-typescript-language-patterns && rm -rf "$T"
manifest: skills/HoangNguyen0403/agent-skills-standard/language/SKILL.md
source content

TypeScript Language Patterns

Priority: P0 (CRITICAL)

Implementation Guidelines

  • Type Annotations: Explicit params/returns. Infer locals.
  • Interfaces vs Types:
    interface
    for APIs.
    type
    for unions.
  • Strict Mode:
    strict: true
    . Null Safety:
    ?.
    and
    ??
    .
  • Enums: Literal unions or
    as const
    . No runtime
    enum
    .
  • Generics: Reusable, type-safe code.
  • Type Guards:
    typeof
    ,
    instanceof
    , predicates.
  • Utility Types:
    Partial
    ,
    Pick
    ,
    Omit
    ,
    Record
    .
  • Immutability:
    readonly
    arrays/objects. Const Assertions:
    as const
    ,
    satisfies
    .
  • Template Literals:
    on${Capitalize<string>}
    .
  • Discriminated Unions: Literal
    kind
    property.
  • Advanced: Mapped, Conditional, Indexed types.
  • Access: Default
    public
    . Use
    private
    /
    protected
    or
    #private
    .
  • Branded Types:
    string & { __brand: 'Id' }
    .

Anti-Patterns

  • No
    any
    : NEVER use
    any
    . Use
    unknown
    or specific interfaces.
  • No
    Function
    : Use signature
    () => void
    .
  • No
    enum
    : Runtime cost.
  • No
    !
    : Use narrowing.
  • NO LINT DISABLE: PROHIBITED. Fix issues properly.

Testing

  • Mocking: Use
    jest.Mocked<T>
    or
    as unknown as T
    .
  • Checklist: Check method existence, match error constants, satisfy required properties.
  • References: See references/TESTING.md for common issues/solutions.

Code

// Branded Type
type UserId = string & { __brand: 'Id' };

// Satisfies (Validate + Infer)
const cfg = { port: 3000 } satisfies Record<string, number>;

// Discriminated Union
type Result<T> = { kind: 'ok'; data: T } | { kind: 'err'; error: Error };

Reference & Examples

For advanced type patterns and utility types: See references/REFERENCE.md.

Related Topics

best-practices | security | tooling