SuperAPI AI 工具集

typescript-core

编程与开发

查看项目

更新于 10-15 12:18

技能介绍

用途

TypeScript Core 是一套面向 2025 年的 TypeScript 开发模式与最佳实践集合,目标是帮助开发者在类型安全、运行时校验和编译配置三方面建立规范做法。它既适用于新建项目,也适用于存量项目的渐进式改造。

主要能力

配置基线

提供 2025 版 tsconfig.json 基线,关键编译选项包括:

  • target: ES2022、module/moduleResolution: NodeNext
  • strict: true
  • noUncheckedIndexedAccess: true(强制对数组/对象访问做空值检查)
  • exactOptionalPropertyTypes: true(区分 undefined 与缺失)
  • verbatimModuleSyntax: true(强制显式 type-only 导入)
  • isolatedModules、skipLibCheck、declaration、declarationMap

还提到 erasableSyntaxOnly 用于 Node.js 22+ 原生 TS 支持的类型剥离环境。仓库特定 tsconfig 模式(CommonJS CLI、NodeNext strict、Next.js bundler)见 references/configuration.md。

核心类型模式

  • const 类型参数:通过泛型函数保留字面量类型。
  • satisfies 操作符:在按类型校验的同时保留字面量推断。
  • 模板字面量类型:类型安全的字符串操作与路由参数提取。
  • 可辨识联合与穷尽性检查:用 never 做穷尽性校验。

运行时校验

TypeScript 类型在运行时消失,因此对外部数据(API、表单、配置文件)需使用校验库。文档对比了三个库:

  • Zod:约 13.5kB,基准速度,适合全栈应用、tRPC 集成
  • TypeBox:约 8kB,约快 10 倍,适合 OpenAPI、性能敏感场景
  • Valibot:约 1.4kB,约快 2 倍,适合边缘函数、极小包体

并给出 Zod 基础模式示例(定义 schema、用 z.infer 推导类型、用 parse 校验外部数据)。

决策支持

提供快速决策指南,覆盖:type 与 interface 的选择、泛型与联合类型的选择、unknown 与 any 的使用、运行时校验库的选型。更完整的决策框架见 decision-trees.md。

排查与反模式

  • 常见问题速查:属性不存在、类型不可赋值、对象可能为 undefined、找不到模块、编译缓慢等。
  • JavaScript/运行时质量反模式:松散相等(==/!=)、动态代码执行(eval、new Function、字符串 setTimeout)、修改内置原型、变量遮蔽、用 var 代替 let/const、switch case 标签中使用逻辑或、重复深层成员访问、未包裹的 IIFE、反斜杠多行字符串、new Array() 等。每项均对应 ESLint/SonarSource 规则,来源为 CAST Highlight JavaScript 代码质量指标。

危险信号

文档列出应停下重新考虑的做法:对外部数据用 any 而非 unknown、未经运行时校验就用 as 断言、为方便关闭 strict 模式、无明确理由使用 @ts-ignore、未启用 noUncheckedIndexedAccess 就做索引访问。

使用方式

文档按场景给出快速上手路径:

  • 新项目:使用 2025 tsconfig → 启用 strict + noUncheckedIndexedAccess → 选择 Zod 做校验
  • 存量项目:先启用 strict: false → 将 any 修复为 unknown → 添加 noUncheckedIndexedAccess
  • API 开发:在边界使用 Zod schema → 用 z.infer 推导类型 → 路由使用 satisfies
  • 库开发:启用 declaration: true → 使用 const 类型参数 → 参考 advanced-patterns-2025.md

适用场景

适用于需要建立 TypeScript 类型规范、配置 tsconfig、实现 API/表单运行时校验、构建泛型库或类型工具、排查类型错误与编译性能问题的开发场景。

限制

文档未提供具体的安装命令、版本号、价格或平台支持信息。部分详细内容(advanced-patterns-2025.md、decision-trees.md、troubleshooting.md、runtime-validation.md、configuration.md)以引用文件形式存在,正文未展开。