配置选项:
include:定义希望被编译文件所在的目录,【**/*】表示:所有目录下的所有文件。
exclude:定义需要排除在外的目录。
ectends:定义被继承的配置文件(类似import)。
files:指定被编译文件的列表(只有需要编译的文件少时才会用到)。
compilerOptions:编译选项,是配置文件中比较重要的配置选项,包含多个子选项,用来完成对编译的配置。
编译选项:
target:设置ts代码编译的目标版本。
lib:指定代码运行时所包含的库(默认不写,表示全部)。
module:指定要使用的模块化的规范。
outDir:用来指定编译后文件所在的目录。
outFile:将所有全局作用域中的代码合并到一个文件中。
allowJs:是否对js文件进行编译,默认是false、
checkJs:是否检查js代码是否符合愈发规范,默认是false、
removeComments:ts编译为js的时候是否移除注释、
noEmit:不生成编译后的文件(只执行过程,有时候不想编译为js,只为了检查下语法、
noEmitError:当有错误时不生成编译后的文件、
对编译器检查的一些配置:
strict:false --这个strict相关标志位的一个总开关, 设置为true会启用全部compilerOptions.strict开头的选项和其他相关的选项, 如compilerOptions.strictNullChecks, compilerOptions.strictPropertyInitialization, compilerOptions.noImplicitAny ...开启此选项后, 依然可以单独关闭某个具体的以compilerOptions.strict开头的选项。
strictPropertyInitialization:开启此选项让 typescript 严格的对象属性初始化检查。
strictBindCallApply:开启此选项后,调用函数对象的 bind call和apply 方法时ts会执行参数类型检查确保参数类型兼容。
strictFunctionTypes:开启此选项会启用严格的函数类型检查。
strictNullChecks:true --严格的检查空值。
比如(box1或为空值):
更正后可用:
alwaysStrict:用来设置编译后的文件是否使用严格模式,默认false(设置为true后,js文件中会多- "use Strict"-如果文件中有export--则无"use Strict)。
noImplicitOverride:Ts4.3引入的配置,开启此选项保证子类重写基类的方法是,必须在方法前加上override关键词。
noImplicitReturns:开启这个选项保证编译时所有条件分支都返回一致的类型。
noProertyAccessFromIndexSignature:从名称入手来理解这个配置, no property access from index signature, 就是说开启后禁止通过访问常规属性的方法来访问index signature声明的属性
常规属性通过在对象后加一个.即可访问如obj.title。
noUncheckedIndexedAccess:开启这个选项, typescript自动给索引签名语法声明的属性补上一个undefined类型; 上面介绍compilerOptions.noPropertyAccessFromIndexSignature时提到可以自己手动给索引签名语法声明的属性加上undefined类型标注达到和开启compilerOptions.noPropertyAccessFromIndexSignature相同的目的。
noImplicitAny:true --不允许隐式的any类型,这个配置还是比较好理解的, 就是开启此选项后, 如果你声明一个没有标注类型的变量, 编译器会会给你一个编译时错误(Parameter 'arg' implicitly has an 'any' type.)。
例如:
noImplicitThis:true --不允许不明确类型的this,开启这个选项后, typescript将禁止调用any类型的this。
例如:
更正后可用:
allowUnreachableCode:表示是否允许代码中出现永远无法被执行到的代码;可选值是:undefined、false、true。
allowUnusedLabels:表示是否允许未使用到的标签;
可选项: undefined:默认值,碰未使用的标签给出warning警告;
false:碰到未使用过的标签抛出错误,编译失败;
true:碰到未使用过的标签编译通过,且不给出异常。
exactOptionalProperties:默认处于不开启状态; 开启此选项, typescript会对可空属性执行更严格的类型检查, 可空属性只有在初始化时可以留空为undefined, 但是不能被手动设置为undefined
downlevellterration:Downleveling是Typescript中的一个术语, 它表示将typescript代码转译为相对更低版本的javascript。这个标志位模式是不开启的.
开启这个标志位typescript会生成一个帮助方法来对es6中的for of和数组展开([...arr])语法进行 转译, 以兼容 es3/es5。
importHelpers:开启compilerOptions.importHelpers后会对for...of之类的迭代语法糖进行downleveling; typescript进行downleveling时, 会生成一些辅助方法, 默认情况下, 这些辅助代码是会直接插入到文件中对应的位置的, 这会生成的javascript存在重复的辅助方法从而造成代码文件体积过大的问题;不在插入具体的辅助方法的代码到对应的位置, 而是通过模块导入来引用typescript的辅助方法。
noUnusedLocals:开启后,当Ts发现未使用的局部变量时,会给出一个编译时错误('<propertyName>' is declared but its value is never read.(6133))。
noUnusedParameters:和上面的compilerOptions.noUnusedLocals, 不同之处在于局部变量变成了函数参数。
useUnKnownInCatchVariables:开启这个选项typescript会将catch语法块中的err变量当做unknown来处理, 不开启此选项时, err变量是被当做any类型来处理的, 这很容易造成经典的read property of undefined运行时异常
一个简单的示例, 不开启compilerOptions.useUnknownInCatchVariables选项运行时才能发布异常。