语言与环境

选项名
默认值
说明

emitDecoratorMetadata

false

启用时会为装饰器生成设计类型元数据,方便依赖注入等反射机制。

experimentalDecorators

false

启用实验性的装饰器语法支持。

jsx

"preserve"

指定 JSX 代码的处理方式,可选 "preserve", "react", "react-native", "react-jsx", "react-jsxdev" 等。

jsxFactory

"React.createElement"

指定 JSX 的工厂函数名,比如用其它库替代 React。

jsxFragmentFactory

"React.Fragment"

指定 JSX Fragment 的工厂函数名。

jsxImportSource

undefined

指定用于 JSX 转换的导入源(用于自动导入 JSX 运行时,例如 @emotion/react)。

lib

["dom", "esnext"]

指定要包含的库文件(比如 es2015, dom 等),影响全局类型。

libReplacement

undefined

用于替代某些默认库的替换方案(一般不用修改)。

moduleDetection

"auto"

模块检测策略,自动检测文件是否为模块。

noLib

false

不包含默认的库文件,通常不建议开启。

reactNamespace

"React"

指定 React 命名空间(通常默认 React)。

target

"esnext"

编译输出的 JavaScript 版本目标,如 es5, es6, es2017 等。

useDefineForClassFields

false

是否使用 ES 标准的 define 来初始化类字段,影响类字段的初始化行为和兼容性。

jsx

  • react-jsx:编译为_jsx调用(自动引入 React,优化生产环境),基于 React 17+ 新 JSX 转换。

  • react-jsxdev:编译为_jsxDEV调用,保留调试信息,适用于开发环境,提供更好的错误提示和 DevTools 支持。

  • react:编译为React.createElement(),旧版 React JSX 转换方式,需要显示导入 React。

  • preserve:保留.tsx文件中的 JSX 原样,输出.jsx文件(不转译)

  • react-native:也保留 JSX,但输出 .js 文件,专用于 React Native 项目。

Target

target设置决定 TypeScript 编译输出的 JavaScript 语言版本。

常见取值

target

描述

适用平台或版本

ES3

最旧支持(已极少使用)

旧版 IE6~IE8(已废弃)

ES5

较旧支持,含 polyfill 机会大

IE11、老 Android 浏览器

ES6 / ES2015

增加类、模块、箭头函数等语法

现代浏览器普遍支持(推荐最低选项)

ES2016~ES2022

每年一版,逐步加入新特性(如 **, async)

Node.js 12+、现代浏览器

ESNext

使用当前 TypeScript 支持的最新语法

尽量避免用于库发布,版本依赖不稳定

✅ 示例:项目推荐设置

选项名
默认值
说明

composite

false

开启增量编译项目支持,要求 declarationoutDir,用于构建大型项目和项目引用(Project References)。

disableReferencedProjectLoad

false

禁止自动加载引用的项目配置文件,通常用于提升大型项目构建性能。

incremental

false

启用增量编译,TypeScript 会保存 .tsbuildinfo 文件,下一次编译时复用先前状态加快编译速度。

tsBuildInfoFile

undefined

指定 .tsbuildinfo 文件的输出路径,默认为 outDir 目录下的 tsconfig.tsbuildinfo

这有帮助吗?