typescript▌
lobehub/lobe-chat · updated Apr 8, 2026
typescript
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>overobjectorany - Prefer
interfacefor object shapes (e.g., React props); usetypefor unions/intersections - Prefer
as const satisfies XyzInterfaceover plainas const - Prefer
@ts-expect-errorover@ts-ignoreoveras any - Avoid meaningless null/undefined parameters; design strict function contracts
- Prefer ES module augmentation (
declare module '...') overnamespace; do not introducenamespace-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
- Prefer
async/awaitover callbacks or.then()chains - Prefer async APIs over sync ones (avoid
*Sync) - Use promise-based variants:
import { readFile } from 'fs/promises' - Use
Promise.all,Promise.racefor concurrent operations where safe
Imports
- This project uses
simple-import-sort/importsandconsistent-type-imports(fixStyle: 'separate-type-imports') - Separate type imports: always use
import type { ... }for type-only imports, NOTimport { type ... }inline syntax - When a file already has
import type { ... }from a package and you need to add a value import, keep them as two separate statements:import type { ChatTopicBotContext } from '@lobechat/types'; import { RequestTrigger } from '@lobechat/types'; - Within each import statement, specifiers are sorted alphabetically by name
Code Structure
- Prefer object destructuring
- Use consistent, descriptive naming; avoid obscure abbreviations
- Replace magic numbers/strings with well-named constants
- Defer formatting to tooling
UI and Theming
- Use
@lobehub/ui, Ant Design components instead of raw HTML tags - Design for dark mode and mobile responsiveness
- Use
antd-styletoken system instead of hard-coded colors
Performance
- Prefer
for…ofloops over index-basedforloops - Reuse existing utils in
packages/utilsor installed npm packages - Query only required columns from database
Time Consistency
- Assign
Date.now()to a constant once and reuse for consistency
Logging
- Never log user private information (API keys, etc.)
- Don't use
import { log } from 'debug'directly (logs to console) - Use
console.errorin catch blocks instead of debug package - Always log the error in
.catch()callbacks — silent.catch(() => fallback)swallows failures and makes debugging impossible
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.6★★★★★70 reviews- ★★★★★Zaid Thomas· Dec 28, 2024
typescript has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Yuki Rahman· Dec 20, 2024
Registry listing for typescript matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Aisha Khanna· Dec 16, 2024
typescript is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
- ★★★★★Evelyn Ramirez· Dec 12, 2024
typescript fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Yusuf Rao· Dec 4, 2024
Useful defaults in typescript — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Layla Johnson· Nov 23, 2024
typescript is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
- ★★★★★Dev Okafor· Nov 19, 2024
typescript fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Zaid Patel· Nov 7, 2024
Useful defaults in typescript — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Evelyn Abbas· Nov 3, 2024
typescript has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Diya Garcia· Oct 26, 2024
I recommend typescript for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
showing 1-10 of 70