JavaScript项目中引入TypeScript进行类型检查的方法
时间:2026-08-12 | 作者:夜鞌不睡 | 阅读:0在现有的 Ja vaScript 项目里接入 TypeScript,并不意味着要把所有文件一股脑重写成 .ts。
更实际的做法,通常是走渐进式路线:先把类型检查启用起来,在尽量保留原有 JS 代码的前提下,拿到类型提示和错误预警。
这件事并不需要一上来就把所有文件统统重写一遍。更稳妥的做法,是渐进式地把类型检查启用起来:
- 先在
tsconfig.json里配置allowJs和checkJs,让现有JS先进入检查范围; - 接着通过 JSDoc 给 JS 文件补上类型注释;
- 再配合
.d.ts声明把缺失的类型信息补齐; - 最后集成
type-check脚本,把开发阶段的提示和 CI 门禁一起落到实处。
说到底,关键就两点:一是用好 TypeScript 的“Ja vaScript 模式”(checkJs),二是配合类型声明把能力补齐。
安装 TypeScript 并初始化配置
在项目根目录运行:
npm install --sa ve-dev typescriptnpx tsc --init生成tsconfig.json
然后在 tsconfig.json 中启用对 JS 文件的检查:
{
"compilerOptions": {
"allowJs": true,
"checkJs": true,
"skipLibCheck": true,
"noEmit": true,
"strict": false,
"jsx": "preserve",
"moduleResolution": "node"
},
"include": ["**/*.js", "**/*.jsx"],
"exclude": ["node_modules"]
}
注意:"noEmit": true 表示只检查、不编译输出,避免干扰现有构建流程。
"strict": false 降低初始门槛,后续可逐步开启(如 strictNullChecks)。
为 JS 文件添加类型注释
这一步可选,但推荐尽早做。TypeScript 能理解 JSDoc 注释,用于标注类型。
例如:
// utils.js
/**
* @param {string} name
* @param {number} age
* @returns {Object}
*/
function createUser(name, age) {
return { name, age };
}
// 调用时如果传错类型,TS 会报错
createUser("Alice", "30"); // 类型错误:age 应为 number
调用时如果传错类型,TS 会报错。这样即使文件仍是 JS,也能获得类型检查能力。
常见 JSDoc 类型写法
@type {Array→ 字符串数组} @type {import('./types').User}→ 引入外部类型定义@typedef {Object} Config→ 自定义类型别名{string} host
添加类型声明文件(.d.ts)补全缺失类型
第三方库若无类型定义,可手动创建 src/types/global.d.ts。
同时,需在 tsconfig.json 的 include 中包含该文件。
// src/types/global.d.ts
declare module 'some-legacy-lib' {
const value: any;
export default value;
}
// 或为全局变量声明
declare const DEV: boolean;
也可安装社区维护的类型包:npm install --sa ve-dev @types/react @types/lodash(查 DefinitelyTyped)。
集成到开发与构建流程
在 package.json 中添加脚本:
"scripts": {
"type-check": "tsc --noEmit",
"type-check:watch": "tsc --noEmit --watch"
}
配合编辑器(VS Code 开箱即用)可获得实时提示。
CI 中运行 npm run type-check,可作为类型门禁。
Webpack/Vite 用户无需改动配置。TypeScript 此时仅做检查,不参与打包。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- JavaScript正则表达式批量处理HTML标签转义与替换方法
- 时间:2026-08-21
-
- JavaScript函数默认参数的精准JSDoc类型注解方法
- 时间:2026-08-21
-
- JavaScript设置Cookie的SameSite属性防范CSRF攻击
- 时间:2026-08-21
-
- JavaScript中BOM如何打开新的浏览器窗口标签
- 时间:2026-08-20
-
- JavaScript微任务队列在事件循环中的执行机制
- 时间:2026-08-20
-
- JavaScript中网络超时如何用流程控制实现中断
- 时间:2026-08-20
-
- JavaScript防抖函数原理与减少高频事件触发方法
- 时间:2026-08-20
-
- TypeScript六个颠覆认知的核心知识点解析
- 时间:2026-08-20
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
