过渡阶段的关键是给javascript动态性加可控约束,typescript支持allowjs、jsdoc注解、渐进式类型替换及@types声明等方式实现js与ts共存。

过渡阶段的关键不是消灭 JavaScript 动态性,而是给它“加一层可控的约束”。TypeScript 不要求你立刻重写所有代码,而是提供多种方式让 JS 的灵活性和 TS 的类型安全共存。
允许 JS 文件参与编译但暂不检查
在 tsconfig.json 中启用 allowJs: true 并关闭 checkJs: false,这样 TypeScript 编译器能识别并打包你的 .js 文件,但不会对它们做类型校验。适合刚起步阶段,避免被大量报错阻塞进度。
- JS 文件照常运行,不受影响
- TS 文件获得完整类型检查
- 为后续逐步添加 JSDoc 类型注解留出缓冲期
用 JSDoc 在 JS 文件里补类型信息
无需改后缀、不碰语法,直接在现有 .js 文件中用 JSDoc 注释描述类型,TypeScript 就能据此推断并提示错误。这是最轻量的“类型引入”方式。
/** @type {string[]} */ const list = [];/** @param {number} id @returns {Promise<user>} */ function fetchUser(id) { ... }</user>- 配合
checkJs: true后,这些注释会触发真实类型检查
渐进式替换 any,优先从接口和函数入⼿
初期可接受 any 快速绕过报错,但要明确标记技术债。下一步聚焦高频、高风险模块:API 响应结构、工具函数入参/返回值、组件 props 等,用 interface 或 type 明确定义。
- 把
function parse(data) { return data.items; }改成function parse(data: { items: string[] }): string[] - 将
const res = await api.get('/user');补上/** @type {ApiResponse<user>} */</user> - 避免全局
any,优先用unknown+ 类型守卫做安全访问
为第三方 JS 库补充类型声明
很多 npm 包没有内置类型,但社区已通过 @types/xxx 提供了定义。安装后,调用时就能获得参数提示和字段校验。
npm install -D @types/lodash @types/axios- 若找不到对应
@types包,可新建types/my-legacy-lib.d.ts手动声明: declare module 'my-legacy-lib' { export function doWork(input: string): number; }
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











