SuperAPI AI 工具集

typescript-knowledge-patch

编程与开发

查看项目

更新于 10-16 01:35

技能介绍

TypeScript Knowledge Patch 是一份迁移向指南,适用于升级编译器配置、选择模块设置、采用原生编译器,或修复升级后新暴露的类型与 JavaScript 检查错误。需要完整兼容细节时按文中链接查阅参考资料。

主要内容分四块:配置、模块与项目迁移(生成配置、默认值变更、模块模式、解析、被移除选项、语法迁移、显式文件编译);JavaScript 与 JSDoc 迁移(参数检查、被移除的 JSDoc 形式、构造函数、可变参数、重载、expando、CommonJS、声明输出);原生编译器与工具链(稳定与预览包、编译器 API 兼容性、编辑器支持、输出/监听限制、worker 控制、构建并发、悬停工具);类型与标准库(Buffer 类型、推断变化、ES2025、Temporal、集合 upsert、可迭代 DOM 声明、Unicode 模板推断)。

迁移速查要点:strict 默认 true、module 默认 esnext、target 随年份浮动(当前 es2025)、noUncheckedSideEffectImports 默认 true、libReplacement 默认 false、rootDir 默认 tsconfig 所在目录、types 省略等同 []。types 为空时导入的声明仍可用,types: ["*"] 仅作临时兼容桥。被退役的选项需替换:moduleResolution 的 node/node10 改用 bundler、nodenext、node20;classic 解析已移除;module 的 amd/umd/systemjs/none 需改用受支持的 ESM 或 CommonJS;outFile 改用逐模块输出加打包器;target es5 至少升到 ES2015;移除已弃用的 downlevelIteration;baseUrl 作为裸导入搜索根应移除并把前缀写进 paths;ignoreDeprecations: "6.0" 只是临时桥。

语法方面:module Foo {} 改为 namespace Foo {};静态与动态 import 断言改为 with 属性,如 import data from "./data.json" with { type: "json" };/// <reference no-default-lib="true"/> 改为 noLib 或 libReplacement 配置;不要再尝试关闭 esModuleInterop、allowSyntheticDefaultImports 或严格模式语义。在 tsconfig.json 旁运行 tsc file.ts 会报 TS5112,正常用项目编译,或有意默认编译时用 tsc --ignoreConfig file.ts。类型化数组与 Buffer 不要假定为 ArrayBuffer,先更新 @types/node,再显式写底层类型或转换,必要时用 Uint8Array<ArrayBuffer>。原生编译器不实现 JavaScript 版 typescript 编译器 API,linter、格式化器或依赖该 API 的扩展需保留兼容包。

模块选择:Node.js 20 固定语义用 module: "node20"(隐含 target es2023);跟随当前行为用 nodenext(隐含 target 浮动为 esnext);打包 ESM 优先 module: "preserve" 配 moduleResolution: "bundler";解析器迁移期可用 commonjs 配 bundler。nodenext 与 bundler 解析均支持以 #/ 开头的 package imports。延迟模块求值 import defer 只接受命名空间导入,首次读取导出时才求值。

标准库:target 与 lib 接受 es2025,仅新增库 API(含 RegExp.escape);Temporal 通过 esnext 目标或 esnext.temporal 库获得;Map/WeakMap 的 getOrInsert、getOrInsertComputed 在 esnext 中提供;lib.dom.d.ts 已含可迭代与异步可迭代 DOM 声明,无需再列 dom.iterable/dom.asynciterable。推断变化时先补显式类型实参或标注,tsc --stableTypeOrdering 可作诊断但会显著变慢。原生构建控制:--checkers N 默认 4,--builders N 设置并发项目构建,--singleThreaded 关闭并行。JavaScript 检查更贴近 TypeScript 规则,迁移前请先阅读相关章节。