TypeScript 中的 allowJs
说明 allowJs 如何让 TypeScript 项目接纳 .js 文件,以及它为什么常用于 JS 到 TS 的渐进迁移。
#tech / dev
#resource / typescript
#type / concept
#status / growing
[!info] related notes
- 所属 MOC: TypeScript MOC
- 配置入口: tsconfig 使用详解
- 并列概念: TypeScript 中的 checkJs, TypeScript 中的 emitDeclarationOnly
TypeScript 中的 allowJs
一句话定义
allowJs 允许 TypeScript 项目把 .js 文件也纳入 program,而不只接受 .ts / .tsx。
核心机制 / 工作原理
官方文档直接说明:
- 开启后,JavaScript files can be imported inside your project
这意味着 TypeScript 不再把 .js 文件视为“项目外部世界”,而是允许它们和 .ts、.tsx 并存。
例如:
{
"compilerOptions": {
"allowJs": true
}
}
之后:
import { defaultCardDeck } from "./card";
就可以合法地指向 card.js。
最小例子 / 最小场景
渐进迁移
allowJs 最常见的用途就是:
- 先让旧 JS 项目被 TypeScript 理解
- 再逐步把部分文件迁成
.ts
官方文档也明确把它描述成:
- incrementally add TypeScript files into JS projects
边界与易混淆点
它不等于“开始检查 JS 报错”
allowJs 只是先让 .js 文件进来。
是否真的对 JS 文件报类型错误,更接近:
它也能和声明文件生成配合
官方文档还特别指出,它可以和:
declarationemitDeclarationOnly
一起使用,用来为 JS 文件生成类型声明。
它常用于迁移,而不是最终结构的唯一目标
如果项目长期大量混用 JS/TS,却没有边界策略,后期类型体验还是容易混乱。
参考信息
- TSConfig
allowJs: https://www.typescriptlang.org/tsconfig/allowJs.html