处理unknown
unknown
实际上就四环一个类型安全的any
unknown
类型的变量,不能直接赋值给其他变量,如果我们想使用类型为unknown
的变量赋值给其他变量可以采用下面几种方法。
ts.config.json
include
:哪些ts文件需要被编译,["./src/**/*"]
,一个*
任意文件,两个*
任意目录
符合glob语法
exclude
:和include
相反,不编译文件["./node_modules/**/*"]
compilerOptions
:编译器选项target
:用来指定ts => es 的版本,默认值es3
,根据需要输出的环境进行选择modules
:用来指定使用的模块化规范,一般选择commonjs
、es2015
lib
:指定需要编译的库,在浏览器环境一般不需要指定,在node环境下需要指定
有这么多可选项
'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
,则所有严格检查选项都自动开启