454 words
2 minutes
TSConfig JavaScript 支持配置
2025-02-26 17:42:50
2025-02-27 15:33:13

← 返回 TSConfig 参考指南


allowJs#

允许在项目中导入 JavaScript 文件,而不仅仅是 .ts 和 .tsx 文件。例如,这个 JS 文件:

// @filename: card.js export const defaultCardDeck = "Heart";

当导入到 TypeScript 文件时会引发错误:

// @filename: index.ts import { defaultCardDeck } from "./card"; console.log(defaultCardDeck);

启用 allowJs 后可以正常导入:

// @filename: index.ts import { defaultCardDeck } from "./card"; console.log(defaultCardDeck);

这个标志可以用作在 JS 项目中逐步添加 TypeScript 文件的方式,允许 .ts 和 .tsx 文件与现有的 JavaScript 文件共存。

它还可以与 declaration 和 emitDeclarationOnly 一起使用,为 JS 文件创建声明文件。

相关配置:

  • checkJs
  • emitDeclarationOnly

发布版本:1.8

checkJs#

与 allowJs 配合使用。当启用 checkJs 时,JavaScript 文件中的错误会被报告。这相当于在项目中所有 JavaScript 文件的顶部包含 // @ts-check。

例如,根据 TypeScript 提供的 parseFloat 类型定义,以下 JavaScript 代码是不正确的:

// parseFloat 只接受字符串参数 module.exports.pi = parseFloat(3.142);

当导入到 TypeScript 模块时:

// @filename: constants.js module.exports.pi = parseFloat(3.142); // @filename: index.ts import { pi } from "./constants"; console.log(pi);

你不会得到任何错误。但是,如果你开启 checkJs,你会从 JavaScript 文件中得到错误消息:

// @filename: constants.js module.exports.pi = parseFloat(3.142); // 类型 "number" 的参数不能赋给类型 "string" 的参数 // @filename: index.ts import { pi } from "./constants"; console.log(pi);

相关配置:

  • allowJs
  • emitDeclarationOnly

发布版本:2.3

maxNodeModuleJsDepth#

在 node_modules 下搜索和加载 JavaScript 文件的最大依赖深度。

此标志只能在启用 allowJs 时使用,如果你想让 TypeScript 推断 node_modules 中所有 JavaScript 的类型,可以使用此选项。

理想情况下,这个值应该保持在 0(默认值),并且应该使用 d.ts 文件来显式定义模块的形状。但是,在某些情况下,你可能希望以牺牲速度和潜在的准确性为代价来启用此选项。

发布版本:2.0

TSConfig JavaScript 支持配置
https://0bipinnata0.my/posts/typescript/tsconfig/04-javascript-support/
Author
0bipinnata0
Published at
2025-02-26 17:42:50