如何配置tsc阻止其为旧React库的JSX组件生成声明文件
可行实现方案如下:
1. 调整tsconfig.json的文件匹配规则
这是最直接的方案,只让tsc处理需要生成声明的TS/TSX文件,自动跳过所有存量JS/JSX:
- 如果你新写的TS组件和存量JS组件分目录存放,直接在
tsconfig.json的include字段仅指定TS组件所在目录即可:
{ "compilerOptions": { // 其他原有配置保持不变,declaration: true 保留用来给TS生成声明 "declaration": true }, "include": ["src/ts-components/**/*.ts", "src/ts-components/**/*.tsx"], "exclude": ["src/**/*.js", "src/**/*.jsx"] }
- 如果新旧组件混排没法按目录区分,直接在
exclude字段加入所有JS/JSX后缀的文件即可,tsc会自动不为这些文件生成声明。 - 如果你没有需要TS识别JS文件的特殊需求,也可以直接把
compilerOptions下的allowJs设为false,从根源上阻止tsc处理JS文件,自然不会生成对应的声明。
2. 给存量JS/JSX文件加忽略注释
如果只有少数JS文件需要保留TS处理、但不需要生成声明,或者没法全局修改tsconfig规则,可以在每个不需要生成声明的JS/JSX文件的首行添加注释:// @ts-nocheck
tsc会直接跳过该文件的类型检查和声明生成流程。
3. 编译后批量清理多余声明文件
如果前两种方案都不符合你的项目场景,可以在编译脚本里加一步后置清理逻辑,编译完成后批量删除所有JS文件对应的声明文件:
- 先安装
del-cli工具用来跨平台删除文件,然后修改package.json的编译脚本:
{ "scripts": { "build": "tsc && del-cli \"dist/**/*.js.d.ts\" \"dist/**/*.jsx.d.ts\"" } }
如果后续你有时间优化存量组件的类型体验,也可以给JS组件加上JSDoc注释明确标注props的可选性,不用全量重构为TS也能生成准确的声明文件。
内容的提问来源于stack exchange,提问作者SimStuch
相关产品推荐
相关产品推荐

