TypeScript 中的 allowJs

说明 allowJs 如何让 TypeScript 项目接纳 .js 文件,以及它为什么常用于 JS 到 TS 的渐进迁移。

#tech / dev #resource / typescript #type / concept #status / growing

[!info] related notes

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 文件报类型错误,更接近:

它也能和声明文件生成配合

官方文档还特别指出,它可以和:

  • declaration
  • emitDeclarationOnly

一起使用,用来为 JS 文件生成类型声明。

它常用于迁移,而不是最终结构的唯一目标

如果项目长期大量混用 JS/TS,却没有边界策略,后期类型体验还是容易混乱。

参考信息

创建于 2026/5/15 更新于 2026/5/27