处理unknown

unknown实际上就四环一个类型安全的any
unknown类型的变量,不能直接赋值给其他变量,如果我们想使用类型为unknown的变量赋值给其他变量可以采用下面几种方法。
unknown.png

ts.config.json

  • include:哪些ts文件需要被编译,["./src/**/*"],一个*任意文件,两个*任意目录

符合glob语法

  • exclude:和include相反,不编译文件 ["./node_modules/**/*"]
  • compilerOptions:编译器选项
    • target:用来指定ts => es 的版本,默认值es3,根据需要输出的环境进行选择
    • modules:用来指定使用的模块化规范,一般选择commonjses2015
    • lib:指定需要编译的库,在浏览器环境一般不需要指定,在node环境下需要指定

有这么多可选项

  1. 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'es2019', 'es2020', 'es2021', 'esnext', 'dom', 'dom.iterable', 'webworker', 'webworker.importscripts', 'webworker.iterable', '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.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'es2018.asyncgenerator', 'es2018.asynciterable', 'es2018.intl', 'es2018.promise', 'es2018.regexp', 'es2019.array', 'es2019.object', 'es2019.string', 'es2019.symbol', 'es2020.bigint', 'es2020.promise', 'es2020.sharedmemory', 'es2020.string', 'es2020.symbol.wellknown', 'es2020.intl', 'es2021.promise', 'es2021.string', 'es2021.weakref', 'esnext.array', 'esnext.symbol', 'esnext.asynciterable', 'esnext.intl', 'esnext.bigint', 'esnext.string', 'esnext.promise', 'esnext.weakref'.
  • outDir:文件编译后的输出目录 ,默认为./
  • outFile:输出文件,将所有代码输出为一个文件,只有amd 和 system 模式支持
  • allowJs:是否编译.js文件,默认为false,即如果指定了outDir.js不会输出到目录下
  • checkJs:是否检查.js文件是否符合ts规范,默认是false
  • removeComments:是否移除注释,默认为false
  • noEmit:不生成编译后的文件,默认是false,如果不使用ts的编译功能,则指定为true,一般我们都使用打包工具来编译ts,则设置这个选项为true
  • alwaysStrict:编译后的js文件,是否开启严格模式,默认是false,这里注意allowJs中编译的.js文件是默认开启的
  • noImplicitAny:不允许隐式的any类型,默认是true
  • noImplicitThis:不允许不明确类型的this,默认是true
  • strictNullChecks:严格检查空值,默认是true
  • strict:严格检查总开关,如果为true,则所有严格检查选项都自动开启