Tsconfig.json是ts编译器的配置文件,ts编译器可以根据它的配置来对代码的编译.
{
"compilerOptions": {
"noImplicitAny": false,
"allowJs":true,
"target": "ES6",
"module": "system",
"lib": [],
"outDir": "./dish",
"outFile": "./dish/app.js",
"checkJs": false,
"removeComments": false,
"noEmit": false,
"noEmitOnError": true,
"alwaysStrict": true,
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strict": false
}
}
-
在 TypeScript 中,可以通过配置 noImplicitAny 选项来禁止隐式声明 any 类型,这是 TypeScript 的默认行为。如果你需要隐式声明 any 类型,可以通过以下步骤开启:
在 tsconfig.json 中配置 noImplicitAny 选项为 false;
-
allowJs指定是否编译js文件,在任意文件当中* 如果我们模块使用js写的,那么我们需要将allowJs设置为true,默认为false;
-
target指定要编译的ts文件编译成什么版本的js,默认是ES3(原因是它老,所有的浏览器多兼容),在ES3中会将let编译成var,而在ES6版本中let将会编译成let,ESNext表示最新版本的ES
-
module指定使用什么个是来进行模块化,它有这几个值:'none', 'commonjs', 'amd',
'system', 'umd', 'es6', 'es2015', 'es2020', 'es2022', 'esnext', 'node12',
'nodenext'. es6与es2015是一样的 -
lib(libary库)指定项目中要使用的库,一般情况下不需要去更改
-
outDir指定编译后的文件所在的目录
-
outFile可以将我们编译后的文件中的全局作用域的代码合并成一个文件
如果要使多个模块合并在一个文件当中,模块module因为amd或system,其他的会报错
一般我们不手动实现,我们通过打包工具来实现这个功能 -
checkJs检查js是否符合js语法,默认为false,checkJs与allowJs一般是一起用的
-
removeComments是否移除注释,默认false
-
noEmit编译但不产生编译后的代码,这个一般使用在不想使用tsc编译生成代码,只想使用它来检查一下代码是否有错,默认为false
-
noEmitOnError指当有错误时不生成文件,默认为false
-
alwaysStrict(strict严格的)js有一种严格模式,也就是比之前的语法更加严谨
浏览器运行的效率更好,我们在单独的js文件中在文件开头部分添加一个“use strict”
表示了我们开启了js的严格模式,而在ts中使用alwaysStrict来进行开启,默认为false -
noImplicitAny(implicit:隐式)检查隐式的any类型,我们不提倡使用any类型,更不提倡使用隐式的any,此时我们可以将noImplicitAny改为true来对隐式的any类型进行检查
-
noImplicitThis检查不明确的this类型,我们知道在单独的函数(也就是函数外边没有指定以的对象)时, 在函数体调用this,这个this指向window,当我们在指定以对象的里面调用this,此时这个this指向我们定义的对象,
比如:
function fn(this){
alert(this)
}
若是函数是在指定义对象外调用,这this指向window
若是函数是在指定义对象里面调用,这this指向这个对象
此时我们可以在函数的形参部分进行声明明确的类型
function fn(this: window){
alert(this)
} -
strictNullChecks 严格的检查空值,默认为false
-
strict是所有严格检查的总开关,默认false,一般开发打开