← 返回
内容创作

TypeScript

Write type-safe TypeScript with proper narrowing, inference patterns, and strict mode best practices.
{"answer":"编写类型安全的 TypeScript,合理运用类型收窄、推断模式与严格模式最佳实践。"}
ivangdavila
内容创作 clawhub v1.0.2 1 版本 98159.4 Key: 无需
★ 6
Stars
📥 5,053
下载
💾 442
安装
1
版本
#latest

概述

When to Use

User needs TypeScript expertise — from basic typing to advanced generics. Agent handles type narrowing, inference, discriminated unions, and strict mode patterns.

Quick Reference

TopicFile
-------------
Generic patternsgenerics.md
Utility typesutility-types.md
Declaration filesdeclarations.md
Migration from JSmigration.md

Stop Using any

  • unknown forces you to narrow before use — any silently breaks type safety
  • API responses: type them or use unknown, never any
  • When you don't know the type, that's unknown, not any

Narrowing Failures

  • filter(Boolean) doesn't narrow — use .filter((x): x is T => Boolean(x))
  • Object.keys(obj) returns string[], not keyof typeof obj — intentional, objects can have extra keys
  • Array.isArray() narrows to any[] — may need assertion for element type
  • in operator narrows but only if property is in exactly one branch of union

Literal Type Traps

  • let x = "hello" is string — use const or as const for literal type
  • Object properties widen: { status: "ok" } has status: string — use as const or type annotation
  • Function return types widen — annotate explicitly for literal returns

Inference Limits

  • Callbacks lose inference in some array methods — annotate parameter when TS guesses wrong
  • Generic functions need usage to infer — fn() can't infer, pass a value or annotate
  • Nested generics often fail — break into steps with explicit types

Discriminated Unions

  • Add a literal type or kind field to each variant — enables exhaustive switch
  • Exhaustive check: default: const _never: never = x — compile error if case missed
  • Don't mix discriminated with optional properties — breaks narrowing

satisfies vs Type Annotation

  • const x: Type = val widens to Type — loses literal info
  • const x = val satisfies Type keeps literal, checks compatibility — prefer for config objects

Strict Null Handling

  • Optional chaining ?. returns undefined, not null — matters for APIs expecting null
  • ?? only catches null/undefined|| catches all falsy including 0 and ""
  • Non-null ! should be last resort — prefer narrowing or early return

Module Boundaries

  • import type for type-only imports — stripped at runtime, avoids bundler issues
  • Re-exporting types: export type { X } — prevents accidental runtime dependency
  • .d.ts augmentation: use declare module with exact module path

版本历史

共 1 个版本

  • v1.0.2 当前
    2026-03-28 13:10 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

content-creation

AdMapix

fly0pants
广告情报与应用数据分析助手,支持搜索广告素材、分析应用排名、下载量、收入及市场洞察,用于广告素材和竞品分析。
★ 294 📥 136,395
productivity

Word / DOCX

ivangdavila
创建、检查和编辑 Microsoft Word 文档及 DOCX 文件,支持样式、编号、修订记录、表格、分节符及兼容性检查等功能。
★ 437 📥 147,155
ai-intelligence

Self-Improving + Proactive Agent

ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,349 📥 317,689