03TypeScript:编译选项


1.自动编译的两种方法

  • tsc ts文件 -w 能够对单个ts文件进行监视,若有修改则会自动重新编译。
  • 新建一个tsconfig.json文件,然后在命令行执行tsc -w 可以对所有ts文件进行监视,若有修改则会自动重新编译。

2.tsconfig.json文件

tsconfig.json 是ts编译器的配置文件,ts编译器可以根据它的信息来对代码进行编译

  1. include

    • 用来表示需要被编译的ts文件目录
    • 路径: **表示任意目录, *表示任意文件
    "include": [
    "./src/**/*"
    ]
  2. exclude

    • 用来表示不需要被编译的文件目录
    • 默认值:[“node_modules”, “bower_components”, “jspm_packages”]
    "exclude": [
        "./src/hello/**/*"
    ]
  3. extends

    • 定义被继承的配置文件
    //表示当前配置文件中会自动包含config目录下base.json中的所有配置信息
    "extends": "./configs/base"
  4. files

    • 指定被编译文件的列表,只有需要编译的文件少时才会用到
    "files": [
    	"core.ts",
    	"sys.ts",
    	"types.ts"
    ]
  5. compilerOptions(重要,编译器的选项)

    compilerOptions有很多的子选项

    "compilerOptions": {
        //target 用来指定ts被编译为ES的版本
        //'es3', 'es5', 'es6', 'es2015', 'es2016', 'es2017', 'es2018', 'es2019', 'es2020', 'esnext'.
        "target": "es2015",
       
        //module 指定要使用的模块化的规范
        //'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015', 'es2020', 'esnext'
        "module": "es2015",
        
        //lib 用来指定项目所用的库
        // "lib": [],//一般情况下不需要设置(浏览器运行的就不用管,nodejs运行的再根据实际使用去指定)
        // 可选值:'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'es2019', 'es2020', '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', 'esnext.array', 'esnext.symbol', 'esnext.asynciterable', 'esnext.intl',
       
       
        //outDir 用来指定编译后文件所在的目录
        "outDir": "./dist",
       
        //outFile 将代码合并为一个文件
        // 设置outFile后,所有的全局作用域中的代码会合并到同一个文件中
        // "outFile": "./dist/app.js",
       
        // 是否对js文件进行编译,默认是false
        "allowJs": true,
       
        // 是否检查js代码是否符合语法规范,默认值是false
        "checkJs": true,
       
        // 是否移除注释
        "removeComments": true,
       
        // 不生成编译后的文件
        "noEmit": false,
       
        // 当有错误时不生成编译文件
        "noEmitOnError": true,
       
        // 所有严格检查的总开关,包括下面四个(如果相同的话可以直接用这个,下面四个省略)
        "strict": true,
       
        // 用来设置编译后的文件是否使用严格模式,默认是false
        "alwaysStrict": true,
       
        // 不允许隐式的any类型
        "noImplicitAny": true,
       
        // 不允许不明确类型的this
        "noImplicitThis": true,
       
        // 严格检查空值
        "strictNullChecks": true
       
    }

文章作者: Bertil Chan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Bertil Chan !
  目录