Typescript学习(二):编译选项

配置选项:

  1. include:定义希望被编译文件所在的目录,【**/*】表示:所有目录下的所有文件。

  1. exclude:定义需要排除在外的目录。

  1. ectends:定义被继承的配置文件(类似import)。

  1. files:指定被编译文件的列表(只有需要编译的文件少时才会用到)。

  1. 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)。

  • noImplicitOverrideTs4.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选项运行时才能发布异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值