# TypeScript Style

Applies TypeScript style and type safety rules to imports, async code and error handling.

- Repository: https://github.com/lobehub/lobehub (83676 stars)
- Category: Engineering
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add lobehub/lobehub --skill typescript -g -a claude-code -y`
Codex: `npx skills add lobehub/lobehub --skill typescript -g -a codex -y`
Cursor: `npx skills add lobehub/lobehub --skill typescript -g -a cursor -y`
Gemini CLI: `npx skills add lobehub/lobehub --skill typescript -g -a gemini-cli -y`

## Description

Use for TypeScript style and type safety when editing TS/TSX/MTS, including imports, async code and error suppression.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# TypeScript Code Style Guide

## Types and Type Safety

- Avoid explicit type annotations when TypeScript can infer
- Avoid implicitly `any`; explicitly type when necessary
- Use accurate types: prefer `Record<PropertyKey, unknown>` over `object` or `any`
- Prefer `interface` for object shapes (e.g., React props); use `type` for unions/intersections
- Prefer `as const satisfies XyzInterface` over plain `as const`
- Prefer `@ts-expect-error` over `@ts-ignore` over `as any`
- Avoid meaningless null/undefined parameters; design strict function contracts
- Prefer ES module augmentation (`declare module '...'`) over `namespace`; do not introduce `namespace`-based extension patterns
- When a type needs extensibility, expose a small mergeable interface at the source type and let each feature/plugin augment it locally instead of centralizing all extension fields in one registry file
- For package-local extensibility patterns like `PipelineContext.metadata`, define the metadata fields next to the processor/provider/plugin that reads or writes them

## Async Patterns

The rest: https://github.com/lobehub/lobehub/blob/HEAD/.agents/skills/typescript/SKILL.md
