## 编译选项
选项 | 类型 | 默认值 | 描述
----------------------------------------|-----------|--------------------------|----------------------------------------------------------------------
`--allowJs` | `boolean` | `false` | 允许编译javascript文件。
`--allowSyntheticDefaultImports` | `boolean` | `module === "system"`或设置了`--esModuleInterop` | 允许从没有设置默认导出的模块中默认导入。这并不影响代码的输出,仅为了类型检查。
`--allowUnreachableCode` | `boolean` | `false` | 不报告执行不到的代码错误。
`--allowUnusedLabels` | `boolean` | `false` | 不报告未使用的标签错误。
`--alwaysStrict` | `boolean` | `false` | 以严格模式解析并为每个源文件生成`"use strict"`语句
`--baseUrl` | `string` | | 解析非相对模块名的基准目录。查看[模块解析文档](./Module%20Resolution.md)了解详情。
`--build`
`-b` | `boolean` | `false` | 使用[Project References](./Project%20References.md)来构建此工程及其依赖工程。注意这个标记与本页内其它标记不兼容。详情参考[这里](./project-references.md)
`--charset` | `string` | `"utf8"` | 输入文件的字符集。
`--checkJs` | `boolean` | `false` | 在.js文件中报告错误。与`--allowJs`配合使用。
`--composite` | `boolean` | `true` | 确保TypeScript能够找到编译当前工程所需要的引用工程的输出位置。
`--declaration`
`-d` | `boolean` | `false` | 生成相应的`.d.ts`文件。
`--declarationDir` | `string` | | 生成声明文件的输出路径。
`--diagnostics` | `boolean` | `false` | 显示诊断信息。
`--disableSizeLimit` | `boolean` | `false` | 禁用JavaScript工程体积大小的限制
`--emitBOM` | `boolean` | `false` | 在输出文件的开头加入BOM头(UTF-8 Byte Order Mark)。
`--emitDecoratorMetadata`[1] | `boolean` | `false` | 给源码里的装饰器声明加上设计类型元数据。查看[issue #2577](https://github.com/Microsoft/TypeScript/issues/2577)了解更多信息。
`--experimentalDecorators`[1]| `boolean` | `false` | 启用实验性的ES装饰器。
`--extendedDiagnostics` | `boolean` | `false` | 显示详细的诊段信息。
`--forceConsistentCasingInFileNames` | `boolean` | `false` | 禁止对同一个文件的不一致的引用。
`--help`
`-h` | | | 打印帮助信息。
`--importHelpers` | `string` | | 从[`tslib`](https://www.npmjs.com/package/tslib)导入辅助工具函数(比如`__extends`,`__rest`等)
`--inlineSourceMap` | `boolean` | `false` | 生成单个sourcemaps文件,而不是将每sourcemaps生成不同的文件。
`--inlineSources` | `boolean` | `false` | 将代码与sourcemaps生成到一个文件中,要求同时设置了`--inlineSourceMap`或`--sourceMap`属性。
`--init` | | | 初始化TypeScript项目并创建一个`tsconfig.json`文件。
`--isolatedModules` | `boolean` | `false` | 将每个文件作为单独的模块(与“ts.transpileModule”类似)。
`--jsx` | `string` | `"preserve"` | 在`.tsx`文件里支持JSX:`"react"`或`"preserve"`或`"react-native"`。查看[JSX](./JSX.md)。
`--jsxFactory` | `string` | `"React.createElement"` | 指定生成目标为react JSX时,使用的JSX工厂函数,比如`React.createElement`或`h`。
`--lib` | `string[]`| | 编译过程中需要引入的库文件的列表。
可能的值为:
► `ES5`
► `ES6`
► `ES2015`
► `ES7`
► `ES2016`
► `ES2017`
► `ES2018`
► `ESNext`
► `DOM`
► `DOM.Iterable`
► `WebWorker`
► `ScriptHost`
► `ES2015.Core`
► `ES2015.Collection`
► `ES2015.Generator`
► `ES2015.Iterable`
► `ES2015.Promise`
► `ES2015.Proxy`
► `ES2015.Reflect`
► `ES2015.Symbol`
► `ES2015.Symbol.WellKnown`
► `ES2016.Array.Include`
► `ES2017.object`
► `ES2017.Intl`
► `ES2017.SharedMemory`
► `ES2017.String`
► `ES2017.TypedArrays`
► `ES2018.Intl`
► `ES2018.Promise`
► `ES2018.RegExp`
► `ESNext.AsyncIterable`
► `ESNext.Array`
► `ESNext.Intl`
► `ESNext.Symbol`
注意:如果`--lib`没有指定默认注入的库的列表。默认注入的库为:
► 针对于`--target ES5`:`DOM,ES5,ScriptHost`
► 针对于`--target ES6`:`DOM,ES6,DOM.Iterable,ScriptHost`
`--listEmittedFiles` | `boolean` | `false` | 打印出编译后生成文件的名字。
`--listFiles` | `boolean` | `false` | 编译过程中打印文件名。
`--locale` | `string` | *(platform specific)* | 显示错误信息时使用的语言,比如:en-us。
`--mapRoot` | `string` | | 为调试器指定指定sourcemap文件的路径,而不是使用生成时的路径。当`.map`文件是在运行时指定的,并不同于`js`文件的地址时使用这个标记。指定的路径会嵌入到`sourceMap`里告诉调试器到哪里去找它们。
`--maxNodeModuleJsDepth` | `number` | `0` | node_modules依赖的最大搜索深度并加载JavaScript文件。仅适用于`--allowJs`。
`--module`
`-m` | `string` | `target === "ES6" ? "ES6" : "commonjs"` | 指定生成哪个模块系统代码:`"None"`,`"CommonJS"`,`"AMD"`,`"System"`,`"UMD"`,`"ES6"`或`"ES2015"`。
► 只有`"AMD"`和`"System"`能和`--outFile`一起使用。
►`"ES6"`和`"ES2015"`可使用在目标输出为`"ES5"`或更低的情况下。
`--moduleResolution` | `string` | `module === "AMD" or "System" or "ES6" ? "Classic" : "Node"` | 决定如何处理模块。或者是`"Node"`对于Node.js/io.js,或者是`"Classic"`(默认)。查看[模块解析](./Module Resolution.md)了解详情。
`--newLine` | `string` | *(platform specific)* | 当生成文件时指定行结束符:`"crlf"`(windows)或`"lf"`(unix)。
`--noEmit` | `boolean` | `false` | 不生成输出文件。
`--noEmitHelpers` | `boolean` | `false` | 不在输出文件中生成用户自定义的帮助函数代码,如`__extends`。
`--noEmitOnError` | `boolean` | `false` | 报错时不生成输出文件。
`--noErrorTruncation` | `boolean` | `false` | 不截短错误消息。
`--noFallthroughCasesInSwitch` | `boolean` | `false` | 报告switch语句的fallthrough错误。(即,不允许switch的case语句贯穿)
`--noImplicitAny` | `boolean` | `false` | 在表达式和声明上有隐含的`any`类型时报错。
`--noImplicitReturns` | `boolean` | `false` | 不是函数的所有返回路径都有返回值时报错。
`--noImplicitThis` | `boolean` | `false` | 当`this`表达式的值为`any`类型的时候,生成一个错误。
`--noImplicitUseStrict` | `boolean` | `false` | 模块输出中不包含`"use strict"`指令。
`--noLib` | `boolean` | `false` | 不包含默认的库文件(`lib.d.ts`)。
`--noResolve` | `boolean` | `false` | 不把`/// `或模块导入的文件加到编译文件列表。
`--noStrictGenericChecks` | `boolean` | `false` | 禁用在函数类型里对泛型签名进行严格检查。
`--noUnusedLocals` | `boolean` | `false` | 若有未使用的局部变量则抛错。
`--noUnusedParameters` | `boolean` | `false` | 若有未使用的参数则抛错。
~~`--out`~~ | `string` | | 弃用。使用 `--outFile` 代替。
`--outDir` | `string` | | 重定向输出目录。
`--outFile` | `string` | | 将输出文件合并为一个文件。合并的顺序是根据传入编译器的文件顺序和`///`和`import`的文件顺序决定的。查看输出文件顺序文件了解详情。
`paths`[2] | `Object` | | 模块名到基于`baseUrl`的路径映射的列表。查看[模块解析文档](./Module Resolution.md#path-mapping)了解详情。
`--preserveConstEnums` | `boolean` | `false` | 保留`const`和`enum`声明。查看[const enums documentation](https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#94-constant-enum-declarations)了解详情。
`--preserveSymlinks` | `boolean` | `false` | 不把符号链接解析为其真实路径;将符号链接文件视为真正的文件。
`--preserveWatchOutput` | `boolean` | `false` | 保留watch模式下过时的控制台输出。
`--pretty`[1] | `boolean` | `false` | 给错误和消息设置样式,使用颜色和上下文。
`--project`
`-p` | `string` | | 编译指定目录下的项目。这个目录应该包含一个`tsconfig.json`文件来管理编译。查看[tsconfig.json](./tsconfig.json.md)文档了解更多信息。
`--reactNamespace` | `string` | `"React"` | 当目标为生成`"react"` JSX时,指定`createElement`和`__spread`的调用对象
`--removeComments` | `boolean` | `false` | 删除所有注释,除了以`/!*`开头的版权信息。
`--rootDir` | `string` | *(common root directory is computed from the list of input files)* | 仅用来控制输出的目录结构`--outDir`。
`rootDirs`[2] | `string[]`| | 根(root)文件夹列表,表示运行时组合工程结构的内容。查看[模块解析文档](./Module Resolution.md#virtual-directories-with-rootdirs)了解详情。
`--showConfig` | `boolean` | `false` | 不真正执行build,而是显示build使用的配置文件信息。
`--skipDefaultLibCheck` | `boolean` | `false` | 忽略[库的默认声明文件](./Triple-Slash Directives.md#-reference-no-default-libtrue)的类型检查。
`--skipLibCheck` | `boolean` | `false` | 忽略所有的声明文件(`*.d.ts`)的类型检查。
`--sourceMap` | `boolean` | `false` | 生成相应的`.map`文件。
`--sourceRoot` | `string` | | 指定TypeScript源文件的路径,以便调试器定位。当TypeScript文件的位置是在运行时指定时使用此标记。路径信息会被加到`sourceMap`里。
`--strict` | `boolean` | `false` | 启用所有严格检查选项。
包含`--noImplicitAny`, `--noImplicitThis`, `--alwaysStrict`, `--strictBindCallApply`, `--strictNullChecks`, `--strictFunctionTypes`和`--strictPropertyInitialization`.
`--strictFunctionTypes` | `boolean` | `false` | 禁用函数参数双向协变检查。
`--strictPropertyInitialization` | `boolean` | `false` | 确保类的非`undefined`属性已经在构造函数里初始化。若要令此选项生效,需要同时启用`--strictNullChecks`。
`--strictNullChecks` | `boolean` | `false` | 在严格的`null`检查模式下,`null`和`undefined`值不包含在任何类型里,只允许用它们自己和`any`来赋值(有个例外,`undefined`可以赋值到`void`)。
`--suppressExcessPropertyErrors`[1] | `boolean` | `false` | 阻止对对象字面量的额外属性检查。
`--suppressImplicitAnyIndexErrors` | `boolean` | `false` | 阻止`--noImplicitAny`对缺少索引签名的索引对象报错。查看[issue #1232](https://github.com/Microsoft/TypeScript/issues/1232#issuecomment-64510362)了解详情。
`--target`
`-t` | `string` | `"ES3"` | 指定ECMAScript目标版本`"ES3"`(默认),`"ES5"`,`"ES6"`/`"ES2015"`,`"ES2016"`,`"ES2017"`或`"ESNext"`。
注意:`"ESNext"`最新的生成目标列表为[ES proposed features](https://github.com/tc39/proposals)
`--traceResolution` | `boolean` | `false` | 生成模块解析日志信息
`--types` | `string[]`| | 要包含的类型声明文件名列表。查看[@types,--typeRoots和--types](./tsconfig.json.md#types-typeroots-and-types)章节了解详细信息。
`--typeRoots` | `string[]`| | 要包含的类型声明文件路径列表。查看[@types,--typeRoots和--types](./tsconfig.json.md#types-typeroots-and-types)章节了解详细信息。
`--version`
`-v` | | | 打印编译器版本号。
`--watch`
`-w` | | | 在监视模式下运行编译器。会监视输出文件,在它们改变时重新编译。监视文件和目录的具体实现可以通过环境变量进行配置。详情请看[配置 Watch](./Configuring%20Watch.md)。
* [1] 这些选项是试验性的。
* [2] 这些选项只能在`tsconfig.json`里使用,不能在命令行使用。
## 相关信息
* 在[`tsconfig.json`](./tsconfig.json.md)文件里设置编译器选项。
* 在[MSBuild工程](./Compiler%20Options%20in%20MSBuild.md)里设置编译器选项。