TypeScript配置文件说明
<p>在使用VsCode编写TypeScript时,VsCode提供了一个tsconfig.json辅助我们设置TypeScript的配置项来确定如何生成最终的js文件。</p><p>那tsconfig.json到底有哪些常用属性,它们又起到什么作用呢?</p>
<p>1、tsconfig.json<br>
1.1、compilerOptions<br>
tsconfig.json文件中的 compilerOptions 属性用于确定如何编译ts文件。</p>
<p>其中大概有如下属性:</p>
<p>1.1.1、module: enum</p>
<p>module 用于指定模块的代码生成规则,可以使用 commonjs 、 amd 、 umd 、 system 、 es6 、 es2015 、 none 这些选项。</p>
<p>选择commonJS,会生成符合commonjs规范的文件,使用amd,会生成满足amd规范的文件,使用system会生成使用ES6的system.import的代码。使用es6或者是es2015会生产包含ES6特性的代码。</p>
<p>1.1.2、target: enum</p>
<p>target 用于指定生成代码的兼容版本,可以从es3,es5,es2015,es6中选择一个,如果不设置,默认生产的代码兼容到es3。</p>
<p>1.1.3、sourceMap: boolean</p>
<p>sourceMap 是是否生成SourceMap的开关,如果设置为true,则会生成.map文件。</p>
<p>1.1.4、 noImplicitAny: boolean</p>
<p>noImplicitAny 当表达式和申明 类型为any时,是否需要发出警告,设置true,则不警告</p>
<p>1.1.5、 removeComments: boolean</p>
<p>用于指定是否需要输出注释,设置为true,则不输出注释。</p>
<p>1.1.6、 charset: string</p>
<p>用于指定ts文件的编码格式</p>
<p>1.1.7、 declaration: boolean</p>
<p>是否需要生成定义文件d.ts,设置为true,则生成。</p>
<p>1.1.8、 diagnostics: boolean</p>
<p>是否需要显示诊断信息,设置为true,则显示。</p>
<p>1.1.9、 emitBOM: boolean</p>
<p>是否需要在输出文件的开头发出一个UTF-8字节顺序标记,设置为true,则输出。</p>
<p>1.1.10、inlineSourceMap: boolean</p>
<p>是否需要将sourceMap文件生成到js文件中,设置为true,则生成到js文件中。</p>
<p>注:此选项和sourceMap、mapRoot选项冲突,会优先使用inlineSouceMap</p>
<p>1.1.11、inlineSources: boolean</p>
<p>用于指定生成的source内容是否inline,如果设置为true,则inline展示(从测试的效果来看,就是生成在js文件中的source map内容要多一些)</p>
<p>注:该设置项依赖inlineSouceMap设置为true</p>
<p>1.1.12、jsx: enum</p>
<p>用于指定按照何种方式生成jsx代码,可选react和preserve。</p>
<p>1.1.13、reactNamespace: string</p>
<p>配置jsx属性使用,指定生成react代码时,需要使用的命名空间。默认""</p>
<p>1.1.14、listFiles: boolean</p>
<p>编译时是否需要打印文件列表,设置为true,则打印。默认false</p>
<p>1.1.15、locale: string</p>
<p>用于指定本地化错误信息,如果设定为en-us,那么错误信息将显示英文。默认""</p>
<p>1.1.16、mapRoot: string(uri)</p>
<p>指定map文件的跟路径,该选项的值影响.map文件中的sources属性。默认""</p>
<p>注:该选项依赖sourceMap: true</p>
<p>1.1.17、newLine: enum</p>
<p>指定换行符。可选 CRLF 和 LF 两种,前者是回车换行,后者是换行。默认是回车换行</p>
<p>1.1.18、noEmit: boolean</p>
<p>当设置为true时,将不会输出</p>
<p>1.1.19、noEmitHelpers: boolean</p>
<p>设置为true时,不会生成自定义的helper函数。</p>
<p>1.1.20、noEmitOnError: boolean</p>
<p>设置为true时,如果遇到了错误,就不再输出</p>
<p>1.1.21、noLib: boolean</p>
<p>设置为true时,将不会包含默认的库,如(lib.d.ts),此时有可能导致找不到Array,String等对象</p>
<p>1.1.22、noResolve: boolean</p>
<p>设置为true时,不使用三斜杠引入模块,需要从编译的文件列表中添加。</p>
<p>/// <reference path=""><br>
import PI from './2A.ts';<br>
1.1.23、skipDefaultLibCheck: boolean</reference></p>
<p>设置为true时,将跳过默认库检查。</p>
<p>1.1.24、outFile: string(uri)</p>
<p>设置输出文件,会将多个ts输入文件合并到该文件中</p>
<p>1.1.25、outDir: string(uri)</p>
<p>指定输出文件的根目录。</p>
<p>1.1.26、preserveConstEnums: boolean</p>
<p>设置为true时,生成代码时不会删除常量枚举声明。</p>
<p>1.1.27、pretty: boolean</p>
<p>当设置为true时,错误信息,跟踪信息将带有颜色和样式</p>
<p>1.1.28、noImplicitUseStrict: boolean</p>
<p>当设置为true时,编译输出时不会调用'use strict'指令(也就是不生成use strict)</p>
<p>1.1.29、rootDir: string(uri)</p>
<p>指定输入文件的根目录。rootDir应包含所有的源文件。</p>
<p>1.1.30、isolatedModules: boolean</p>
<p>设置为true时,无条件的触发导入未解决的文件。</p>
<p>1.1.31、sourceRoot: string(uri)</p>
<p>设置在调试时定位的目标文件根目录</p>
<p>1.1.32、suppressExcessPropertyErrors: boolean</p>
<p>设置为true时,禁止过剩的对象字面量属性检查</p>
<p>1.1.33、suppressImplicitAnyIndexErrors: boolean</p>
<p>Suppress noImplicitAny errors for indexing objects lacking index signatures.</p>
<p>1.1.34、stripInternal: boolean</p>
<p>设置为true,则遇到@internal注解时,不会触发代码定义。</p>
<p>1.1.35、watch: boolean</p>
<p>设置为true时,将监视文件变化。当文件变化时,自动编译</p>
<p>1.1.36、experimentalDecorators: boolean</p>
<p>设置为true,则支持ES7的装饰器特性</p>
<p>1.1.37、emitDecoratorMetadata: boolean</p>
<p>设置为true,则使用元数据特性</p>
<p>1.1.38、moduleResolution: string</p>
<p>指定模块的解析策略,Node或者是classic,默认是classic。</p>
<p>1.1.39、allowUnusedLabels: boolean</p>
<p>设置为true时,允许没有用到的标签。</p>
<p>l: do{<br>
console.log('abc');<br>
}while (1 !== 1);<br>
以上代码有个未使用的标签l,默认是会报错的。</p>
<p>1.1.40、noImplicitReturns: boolean</p>
<p>设置为true时,如果不是函数中的所有路径都有返回值,则提示Error。</p>
<p>var a = 2;<br>
function fun(){<br>
if(a === 1){<br>
return 'abc';<br>
}<br>
//fun函数只有当a = 1的时候,才有确定的返回值。<br>
}<br>
1.1.41、noFallthroughCasesInSwitch: boolean</p>
<p>设置为true时,将严格校验switch-case语法。</p>
<p>function fun2(){<br>
let key = 'ab';<br>
switch (key) {<br>
case 'ab':<br>
console.log('abc');<br>
}<br>
}<br>
以上代码默认情况不会报错,当设置noFallthroughCasesInSwitch: true时,则会提示错误。</p>
<p>1.1.42、allowUnreachableCode: boolean</p>
<p>设置为true时,如果有无法访问的代码,也不会报错。</p>
<p>function fun(){<br>
return 'abc';<br>
return 'ccc'; //默认会报错,设置allowUnreachableCode为true时,则不报错<br>
}<br>
1.1.43、forceConsistentCasingInFileNames: boolean</p>
<p>设置为true时,将强制区分大小写。默认为false。</p>
<p>//2a.ts<br>
export const PI = 3.1415926;<br>
//1a.ts<br>
import PI from './2A.ts';<br>
function fun(){<br>
return PI;<br>
}<br>
以上代码默认可以通过,当强制区分大小写时,则提示错误 '2a' !== '2A'</p>
<p>1.1.44、allowSyntheticDefaultImports: boolean</p>
<p>设置为true时,则允许从没有默认导出的模块中默认导入(也就是不做检查)。</p>
<p>//2.ts<br>
export const PI = 3.1415926;<br>
//1.ts<br>
import PI from './2.ts';<br>
function fun(){<br>
return PI;<br>
}<br>
以上代码,默认是会报错的,当设置allowSyntheticDefaultImports时,则不会报错。</p>
<p>1.1.45、allowJs: boolean</p>
<p>当设置为true时,js文件也会被编译。</p>
<p>注意:编译js文件时,如果不另外设置outFile,将不会成功,因为不能够重写源代码文件</p>
<p>1.2、compileOnSave<br>
该属性用于启用保存时编译功能。</p>
<p>**注意:当前仅仅只有VS2015配置TypeScript1.8.4以后或者在atom中搭配atom-typescript插件才有效</p>
<p>1.3、exclude<br>
exclude用于排除不需要编译的ts文件。该属性和files属性冲突。两者只能设置其一。</p>
<p>1.4、files<br>
当files属性不存在时,编译器会编译当前目录和子目录中的所有文件。当files属性存在是,仅仅是编译files列表中的文件。</p>
<p>该属性和exclude属性冲突。如果同时指定了exclude和files,则files属性优先。</p>
<p>2、常用tsconfig配置<br>
{<br>
"compilerOptions": {<br>
"target": "ES5",<br>
"module": "commonjs",<br>
"emitDecoratorMetadata": true,<br>
"experimentalDecorators": true,<br>
"sourceMap": true,<br>
"noEmitHelpers": true<br>
},<br>
"exclude": [<br>
"node_modules",<br>
"typings/main",<br>
"typings/main.d.ts"<br>
],<br>
"compileOnSave": false<br>
}</p>
<p>注意:本文摘录于github</p><br><br>
来源:https://www.cnblogs.com/wangleicode/p/10937707.html
頁:
[1]