Update compiler options for TS 2.1. PR438

This commit is contained in:
zhongsp 2016-11-24 10:11:41 +08:00
parent dae8970d89
commit 153b38de64
3 changed files with 67 additions and 16 deletions

View File

@ -6,6 +6,7 @@
`--allowSyntheticDefaultImports` | `boolean` | `module === "system"` | 允许从没有设置默认导出的模块中默认导入。这并不影响代码的显示,仅为了类型检查。
`--allowUnreachableCode` | `boolean` | `false` | 不报告执行不到的代码错误。
`--allowUnusedLabels` | `boolean` | `false` | 不报告未使用的标签错误。
`--alwaysStrict` | `boolean` | `false` | 以严格模式解析并为每个源文件生成`"use strict"`语句
`--baseUrl` | `string` | | 解析非相对模块名的基准目录。查看[模块解析文档](./Module Resolution.md#base-url)了解详情。
`--charset` | `string` | `"utf8"` | 输入文件的字符集。
`--declaration`<br/>`-d` | `boolean` | `false` | 生成相应的'.d.ts'文件。
@ -14,32 +15,34 @@
`--disableSizeLimit` | `boolean` | `false` | 禁用JavaScript工程体积大小的限制
`--emitBOM` | `boolean` | `false` | 在输出文件的开头加入BOM头UTF-8 Byte Order Mark
`--emitDecoratorMetadata`<sup>[1]</sup> | `boolean` | `false` | 给源码里的装饰器声明加上设计类型元数据。查看[issue #2577](https://github.com/Microsoft/TypeScript/issues/2577)了解更多信息。
`--experimentalDecorators`<sup>[1]</sup>| `boolean` | `false` | 实验性启用ES7装饰器支持
`--experimentalDecorators`<sup>[1]</sup>| `boolean` | `false` | 启用实验性的ES装饰器
`--forceConsistentCasingInFileNames` | `boolean` | `false` | 不允许不一致包装引用相同的文件。
`--help`<br/>`-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` | 无条件地给没有解析的文件生成imports。
`--jsx` | `string` | `"Preserve"` | 在'.tsx'文件里支持JSX'React' 或 'Preserve'。查看[JSX](./JSX.md)。
`--lib` | `string[]`| | 编译过程中需要引入的库文件的列表。<br/>可能的值为: <br/>`es5` <br/>`es6` <br/>`es2015` <br/>`es7` <br/>`es2016` <br/>`es2017` `dom` `webworker` `scripthost` <br/>`es2015.core` <br/>`es2015.collection` <br/>`es2015.generator` <br/>`es2015.iterable` <br/>`es2015.promise` <br/>`es2015.proxy` <br/>`es2015.reflect` <br/>`es2015.symbol` <br/>`es2015.symbol.wellknown` <br/>`es2016.array.include` <br/>`es2017.object` <br/>`es2017.sharedmemory`
`--jsx` | `string` | `"Preserve"` | 在`.tsx`文件里支持JSX`"React"`或`"Preserve"`。查看[JSX](./JSX.md)。
`--jsxFactory` | `string` | `"React.createElement"` | 指定生成目标为react JSX时使用的JSX工厂函数比如`React.createElement`或`h`。
`--lib` | `string[]`| | 编译过程中需要引入的库文件的列表。<br/>可能的值为: <br/>`ES5` <br/>`ES6` <br/>`ES2015` <br/>`ES7` <br/>`ES2016` <br/>`ES2017` <br/>`DOM` <br/>`DOM.Iterable` <br/>`WebWorker` <br/>`ScriptHost` <br/>`ES2015.Core` <br/>`ES2015.Collection` <br/>`ES2015.Generator` <br/>`ES2015.Iterable` <br/>`ES2015.Promise` <br/>`ES2015.Proxy` <br/>`ES2015.Reflect` <br/>`ES2015.Symbol` <br/>`ES2015.Symbol.WellKnown` <br/>`ES2016.Array.Include` <br/>`ES2017.object` <br/>`ES2017.SharedMemory` <br/><br/> 注意:如果`--lib`没有指定一个默认注入的库。默认注入的库为:<br/> ► 针对于`--target ES5``DOMES5ScriptHost`<br/> ► 针对于`--target ES6``DOMES6DOM.IterableScriptHost`
`--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`<br/>`-m` | `string` | `target === 'ES6' ? 'ES6' : 'commonjs'` | 指定生成哪个模块系统代码:'commonjs''amd''system',或 'umd'或'es2015'。只有'amd'和'system'能和`--outFile`一起使用。当目标是ES5或以下的时候不能使用'es2015'
`--moduleResolution` | `string` | `module === 'amd' | 'system' | 'ES6' ? 'classic' : 'node'` | 决定如何处理模块。或者是'node'对于Node.js/io.js或者是'classic'(默认)。查看[模块解析](./Module Resolution.md)了解详情。
`--newLine` | `string` | *(platform specific)* | 当生成文件时指定行结束符:'CRLF'dos或 'LF' unix
`--module`<br/>`-m` | `string` | `target === "ES6" ? "ES6" : "commonjs"` | 指定生成哪个模块系统代码:`"None"``"CommonJS"``"AMD"``"System"``"UMD"``"ES6"`或`"ES2015"`。<br/>► 只有`"AMD"`和`"System"`能和`--outFile`一起使用。<br/>► 当目标是`"ES5"`或以下的时候不能使用`"ES6"`和`"ES2015"`
`--moduleResolution` | `string` | `module === "AMD" | "System" | "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` | 报错时不生成输出文件。
`--noFallthroughCasesInSwitch` | `boolean` | `false` | 报告switch语句的fallthrough错误。不允许switch的case语句贯穿
`--noImplicitAny` | `boolean` | `false` | 在表达式和声明上有隐含的'any'类型时报错。
`--noImplicitAny` | `boolean` | `false` | 在表达式和声明上有隐含的`any`类型时报错。
`--noImplicitReturns` | `boolean` | `false` | 不是函数的所有返回路径都有返回值时报错。
`--noImplicitThis` | `boolean` | `false` | 当`this`表达式的值为`any`类型的时候,生成一个错误。
`--noImplicitUseStrict` | `boolean` | `false` | 模块输出中不包含'use strict'指令。
`--noLib` | `boolean` | `false` | 不包含默认的库文件lib.d.ts
`--noLib` | `boolean` | `false` | 不包含默认的库文件(`lib.d.ts`)。
`--noResolve` | `boolean` | `false` | 不把`/// <reference``>`或模块导入的文件加到编译文件列表。
`--noUnusedLocals` | `boolean` | `false` | 若有未使用的局部变量则抛错。
`--noUnusedParameters` | `boolean` | `false` | 若有未使用的参数则抛错。
@ -50,19 +53,19 @@
`--preserveConstEnums` | `boolean` | `false` | 保留`const`和`enum`声明。查看[const enums documentation](https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#94-constant-enum-declarations)了解详情。
`--pretty`<sup>[1]</sup> | `boolean` | `false` | 给错误和消息设置样式,使用颜色和上下文。
`--project`<br/>`-p` | `string` | | 编译指定目录下的项目。这个目录应该包含一个`tsconfig.json`文件来管理编译。查看[tsconfig.json](./tsconfig.json.md)文档了解更多信息。
`--reactNamespace` | `string` | `"React"` | 当目标为生成'react' JSX时指定`createElement`和`__spread`的调用对象
`--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`<sup>[2]</sup> | `string[]`| | <i>root</i>文件夹列表,联给了代表运行时表示工程结构的内容。查看[模块解析文档](./Module Resolution.md#virtual-directories-with-rootdirs)了解详情。
`--skipDefaultLibCheck` | `boolean` | `false` | 忽略[库的默认声明文件](./Triple-Slash Directives.md#-reference-no-default-libtrue)的类型检查。
`--skipLibCheck` | `boolean` | `false` | 忽略所有的声明文件(`*.d.ts`)的类型检查。
`--sourceMap` | `boolean` | `false` | 生成相应的'.map'文件。
`--sourceMap` | `boolean` | `false` | 生成相应的`.map`文件。
`--sourceRoot` | `string` | | 指定TypeScript源文件的路径以便调试器定位。当TypeScript文件的位置是在运行时指定时使用此标记。路径信息会被加到`sourceMap`里。
`--strictNullChecks` | `boolean` | `false` | 在严格的`null`检查模式下,`null`和`undefined`值不包含在任何类型里,只允许用它们自己和`any`来赋值(有个例外,`undefined`可以赋值到`void`)。
`--stripInternal`<sup>[1]</sup> | `boolean` | `false` | 不对具有`/** @internal */` JSDoc注解的代码生成代码。
`--suppressExcessPropertyErrors`<sup>[1]</sup> | `boolean` | `false` | 阻止对对象字面量的额外属性检查。
`--suppressImplicitAnyIndexErrors` | `boolean` | `false` | 阻止`--noImplicitAny`对缺少索引签名的索引对象报错。查看[issue #1232](https://github.com/Microsoft/TypeScript/issues/1232#issuecomment-64510362)了解详情。
`--target`<br/>`-t` | `string` | `"ES5"` | 指定ECMAScript目标版本'ES3' (默认)'ES5',或'ES6'<sup>[1]</sup>
`--target`<br/>`-t` | `string` | `"ES5"` | 指定ECMAScript目标版本`"ES3"`(默认),`"ES5"``"ES6"`/`"ES2015"``"ES2016"``"ES2017"`或`"ESNext"`。<br/><br/> 注意:`"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)章节了解详细信息。

View File

@ -87,7 +87,7 @@
使用`"include"`引入的文件可以使用`"exclude"`属性过滤。
然而,通过`"files"`属性明确指定的文件却总是会被包含在内,不管`"exclude"`如何设置。
如果没有特殊指定,`"exclude"`默认情况下会排除`node_modules``bower_components``jspm_packages`目录。
如果没有特殊指定,`"exclude"`默认情况下会排除`node_modules``bower_components``jspm_packages`和`<outDir>`目录。
任何被`"files"或`"include"`指定的文件所引用的文件也会被包含进来。
`A.ts`引用了`B.ts`,因此`B.ts`不能被排除,除非引用它的`A.ts`在`"exclude"`列表中。
@ -134,6 +134,56 @@
注意,自动引入只在你使用了全局的声明(相反于模块)时是重要的。
如果你使用`import "foo"`语句TypeScript仍然会查找`node_modules`和`node_modules/@types`文件夹来获取`foo`包。
## 使用`extends`继承配置
`tsconfig.json`文件可以利用`extends`属性从另一个配置文件里继承配置。
`extends`是`tsconfig.json`文件里的顶级属性(与`compilerOptions``files``include`,和`exclude`一样)。
`extends`的值是一个字符串,包含指向另一个要继承文件的路径。
在原文件里的配置先被加载,然后被来至继承文件里的配置重写。
如果发现循环引用,则会报错。
来至所继承配置文件的`files``include`和`exclude`*覆盖*源配置文件的属性。
配置文件里的相对路径在解析时相对于它所在的文件。
比如:
`configs/base.json`
```json
{
"compilerOptions": {
"noImplicitAny": true,
"strictNullChecks": true
}
}
```
`tsconfig.json`
```json
{
"extends": "./configs/base",
"files": [
"main.ts",
"supplemental.ts"
]
}
```
`tsconfig.nostrictnull.json`
```json
{
"extends": "./tsconfig",
"compilerOptions": {
"strictNullChecks": false
}
}
```
## `compileOnSave`
在最顶层设置`compileOnSave`标记可以让IDE在保存文件的时候根据`tsconfig.json`重新生成文件。

View File

@ -25,9 +25,7 @@
},
"homepage": "https://github.com/zhongsp/TypeScript",
"devDependencies": {
"gulp": "^3.8.11",
"gulp-typescript": "^2.6.0",
"glob": "^5.0.15",
"markdownlint": "0.0.8"
"glob": "^7.1.1",
"markdownlint": "^0.3.1"
}
}