tsc xxx.ts // 编译xxx.ts文件
tsc xxx.ts -w // 编译并监视xxx.ts文件
tsc // 编译所有ts文件,前提是存在tsconfig.json
tsc -w // 编译并监视所有ts文件,前提是存在tsconfig.json
tsconfig.json是ts的配置文件,里边可以写注释,其常用配置选项如下:
1. include:定义希望被编译文件所在目录,默认值为['**/*'],**表示任意目录,*表示任意文件
"include": [ "./src/**/*" ]
2. exclude:不需要被编译的文件目录,默认值为["node_modules", "bower_components", "jspm_packages"]
"exclude": [ "./src/hello/**/*" ]
3.extends:定义被继承的配置文件,将不想重复写的配置项引入进来
"extends": "./configs/base"
4. files:指定被编译文件的列表,编译文件较少时适用
- "files": [
- "core.ts",
- "tsc.ts",
- ...
- ]
5. compilerOptions 编译器的选项
- "compilerOptions": {
- "target": "ES3", //用来指定ts被编译为的es的版本,值为es版本(见下方标注)
- "module": "commonjs", //指定要使用的模块化的规范(值见下方标注)
- "lib": ["es6", "dom"], //用来指定项目中要用的库,前端运行代码不需要改变其默认值
- "outDir": "./dist", //指定编译后文件所在的目录
- "outFile": "./dist/app.js", //将代码合并为一个文件,所有的全局作用域中的代码会合并到一个文件中,若想合并多个模块,需要将module的值改为amd或system,可以结合打包工具完成此功能
- "allowJs": false, //是否对js文件进行编译,默认是false
- "checkJs": false, //是否检查js代码是否符合语法规范,默认是false
- "removeComments": false, //是否移除注释
- "noEmit": true, //不生成编译后的文件,默认值是false
- "noEmitOnError": false, //当有错误时,不生成编译后的文件,默认false
-
- "strict": false, //所有严格检查的总开关,下方四个设置的总开关
- "alwaysStrict": false, //用来设置编译后的文件是否使用严格模式,默认false
- "noImplicitAny": false, //不允许隐式的any类型,默认false
- "noImlicitThis": false, //不允许不明确类型的this,默认false
- "strictNullChecks": false, //严格的检查空值
- }
-
注:
1.es目前版本值:'es3', 'es5', 'es6', 'es2015', 'es2016', 'es2017', 'es2018', 'es2019', 'es2020', 'es2021', 'es2022', 'esnext'
2. module可用值为:'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015', 'es2020', 'es2022', 'esnext', 'node16', 'nodenext'
3. 当"noImlicitThis": true时
function fn(this: Window){ console.log(this) }
4. "strictNullChecks": true时
let box = document.getElementById('box')
box.addEventListener('click', function(){...}) //此时box报错,因为可能没有id为box的元素