mcpField
M
migrate-js-to-modern-typescript

migrate-js-to-modern-typescript

github.com/pproenca开发218136 次安装11 周前更新
代码仓库

关于 migrate-js-to-modern-typescript

这是一项包含 42 条规则的参考技能,指导开发者逐步将 JavaScript 代码库迁移到严格的现代 TypeScript。内容涵盖配置、类型标注、运行时校验、惯用写法转换及构建工具,并强调迁移期间保持编译可用。

主要功能

  1. 01涵盖七类迁移主题的 42 条规则
  2. 02按优先级指导渐进式迁移
  3. 03提供严格模式与 tsconfig 策略
  4. 04说明类型标注与运行时校验
  5. 05涵盖构建、工具和 CI 建议

适用场景

  1. 01规划渐进式 JavaScript 到 TypeScript 迁移
  2. 02在混合代码库中逐步启用严格检查
  3. 03替换不安全的 any、类型断言和非空断言
  4. 04为外部数据和环境变量添加类型校验

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pproenca/dot-skills --skill migrate-js-to-modern-typescript

安装后在 Claude Code 中输入/migrate-js-to-modern-typescript确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

AGENTS.md
metadata.json
assets/templates/
_template.md
references/
_sections.md
idiom-default-export-to-named.md
idiom-enum-to-union-or-const.md
idiom-optional-chaining-over-guards.md
idiom-prototype-to-class.md
idiom-replace-arguments-object.md
idiom-require-to-import.md
idiom-type-only-imports.md
runtime-derive-types-from-schemas.md
runtime-type-environment-variables.md
runtime-type-guards-at-boundaries.md
runtime-type-json-parse.md
runtime-validate-external-data.md
setup-allowjs-checkjs-bridge.md
setup-jsdoc-before-rename.md
setup-migrate-leaves-first.md
setup-modern-module-resolution.md
setup-noemitonerror-isolatedmodules.md
setup-prefer-ts-expect-error.md
setup-skiplibcheck-during-migration.md
strict-enable-flags-incrementally.md
strict-exact-optional-property-types.md
strict-no-implicit-any.md
strict-no-unchecked-indexed-access.md
strict-prioritize-null-checks.md
strict-use-unknown-in-catch.md
surface-annotate-exported-signatures.md

详细介绍

JavaScript 到 TypeScript 迁移最佳实践

本指南介绍如何在不进行大规模重写的情况下,将 JavaScript 代码库迁移到严格、现代的 TypeScript。包含 7 个类别中的 42 条规则,并按影响程度排序,以便逐步逐文件迁移,同时确保每一步都能通过构建。

适用场景

在以下情况下可参考这些指南:

  • 将 .js 代码库转换为 .ts(整个项目或一次一个模块)
  • 通过 JSDoc 或注释为现有 JavaScript 添加类型
  • 为混合 JS/TS 仓库选择 tsconfig 和 allowJs 策略
  • 在大型代码库中启用 strict 模式或单独的严格选项
  • 替换快速转换后遗留的 any、as 类型断言和 ! 断言
  • 验证外部数据(JSON、环境变量、API 响应),确保所编写的类型在运行时也成立
  • 将 CommonJS 转换为 ESM、将原型转换为类,以及将其他 JS 惯用写法转换为 TS
  • 更新构建、运行器和 CI,以进行类型检查并发布 TypeScript

迁移流程

tsconfig & strategy → strictness ratchet → type the surfaces → kill any/casts
   → validate runtime boundaries → convert JS idioms → tooling/build/CI

前期决策会产生连锁影响:错误的 tsconfig 或从上到下的转换顺序,会迫使你对模块重复进行类型标注;而过早大量使用 any,则会污染后续所有内容。请从此流程的前端开始,并从依赖关系图的叶节点向内推进。

按优先级划分的规则类别

优先级类别影响前缀
1迁移设置与 tsconfigCRITICALsetup-
2逐步收紧严格性CRITICALstrict-
3为公共接口添加类型HIGHsurface-
4替换 any 和不安全的类型断言HIGHunsafe-
5运行时数据验证MEDIUM-HIGHruntime-
6将 JS 惯用写法转换为 TSMEDIUMidiom-
7工具链与构建迁移LOW-MEDIUMtooling-

快速参考

1. 迁移设置与 tsconfig(CRITICAL)
2. 逐步收紧严格性(CRITICAL)
3. 为公共接口添加类型(高)
4. 替换 any 和不安全的类型断言(高)
5. 运行时数据验证(中高)
6. JS 到 TS 的惯用写法转换(中)
7. 工具与构建迁移(低至中等)

使用方法

阅读各参考文件,了解详细说明和代码示例:

相关技能

  • typescript-refactor — 重构和现代化已有的 TypeScript 代码
  • typescript-advanced-patterns — 迁移完成后的高级类型级模式

参考文件

文件描述
references/_sections.md类别定义和排序
assets/templates/_template.md新规则模板
metadata.json版本和参考信息

评论

支持 Markdown