配置 tsconfig.json

tsconfig.json 所包含的属性并不多,只有 7 个,ms 官方也给出了它的定义文件。但看起来并不怎么舒服,这里就翻译整理一下。(若有误,还请指出)

  • files: 数组类型,用于表示由 ts 管理的文件的具体文件路径
  • exclude: 数组类型,用于表示 ts 排除的文件(2.0 以上支持 Glob)
  • include: 数组类型,用于表示 ts 管理的文件(2.0 以上)
  • compileOnSave: 布尔类型,用于 IDE 保存时是否生成编译后的文件
  • extends: 字符串类型,用于继承 ts 配置,2.1 版本后支持
  • compilerOptions: 对象类型,设置编译的选项,不设置则使用默认配置,配置项比较多,后面再列
  • typeAcquisition: 对象类型,设置自动引入库类型定义文件(.d.ts)相关,该对象下面有 3 个子属性分别是:
    • enable: 布尔类型,是否开启自动引入库类型定义文件(.d.ts),默认为 false
    • include: 数组类型,允许自动引入的库名,如:["jquery", "lodash"]
    • exculde: 数组类型,排除的库名

如不设定 files 和 include,ts 默认是 exclude 以外的所有的以 .ts 和 .tsx 结尾的文件。如果,同时设置 files 的优先级最高,exclude 次之,include 最低。

上面都是文件相关的,编译相关的都是靠 compilerOptions 设置的,接着就来看一看。

属性名 值类型 默认值 描述
allowJs boolean false 编译时,允许有 js 文件
allowSyntheticDefaultImports boolean module === "system" 允许引入没有默认导出的模块
allowUnreachableCode boolean false 允许覆盖不到的代码
allowUnusedLabels boolean false 允许未使用的标签
alwaysStrict boolean false 严格模式,为每个文件添加 "use strict"
baseUrl string   与 path 一同定义模块查找的路径,详细参考这里
charset string "utf8" 输入文件的编码类型
checkJs boolean false 验证 js 文件,与 allowJs 一同使用
declaration boolean false 生成 .d.ts 定义文件
declarationDir string   生成定义文件的存放文件夹(2.0 以上)
diagnostics boolean false 是否显示诊断信息
downlevelIteration boolean false 当 target 为 ES5 或 ES3 时,提供对 for..of,解构等的支持
emitBOM boolean false 在输出文件头添加 utf-8 (BOM)字节标记
emitDecoratorMetadata boolean false 详见 issue
experimentalDecorators boolean false 允许注解语法
forceConsistentCasingInFileNames boolean false 不允许不同变量来代表同一文件
importHelpers   boolean false 引入帮助(2.1 以上)
inlineSourceMap boolean false 将 source map 一同生成到输出文件中
inlineSources boolean false 将 ts 源码生成到 source map 中,需要同时设置 inlineSourceMap 或 sourceMap
isolatedModules boolean false 将每个文件作为单独的模块
jsx string "preserve" jsx 的编译方式
jsxFactory string "React.createElement" 定义 jsx 工厂方法,React.createElement 还是 h(2.1 以上)
lib string[]   引入库定义文件,可以是["es5", "es6", "es2015", "es7", "es2016", "es2017", "esnext", "dom", "dom.iterable", "webworker", "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", "esnext.asynciterable"](2.0 以上)
listEmittedFiles boolean false 显示输入文件名
listFiles boolean false 显示编译输出文件名
locale string 随系统 错误信息的语言
mapRoot string   定义 source map 的存放位置
maxNodeModuleJsDepth number 0 检查引入 js 模块的深度,需同 allowJs 一同使用
module string   指定模块生成方式,["commonjs", "amd", "umd", "system", "es6", "es2015", "esnext", "none"]
moduleResolution string   指定模块解析方式,["classic" : "node"]
newLine string 随系统 行位换行符,"crlf" (windows) 或 "lf" (unix)
noEmit boolean false 不显示输出
noEmitHelpers boolean false 不在输出文件中生成帮助
noEmitOnError boolean false 出错后,不输出文件
noFallthroughCasesInSwitch boolean false switch 语句中,每个 case 都要有 break
noImplicitAny boolean false 不允许隐式 any,如果true,函数的形参必须带类型,如果叫不出class名的js对象,那就得any,比如(d:any)=>{}

如果false,函数的样子更像js  (d)=>{}
noImplicitReturns boolean false 函数所有路径都必须有显示 return
noImplicitThis boolean false 不允许 this 为隐式 any
noImplicitUseStrict boolean false 输出中不添加 "use strict"
noLib boolean false 不引入默认库文件
noResolve boolean false 不编译三斜杠或模块引入的文件
noUnusedLocals boolean false 未使用的本地变量将报错(2.0 以上)
noUnusedParameters boolean false 未使用的参数将报错(2.0 以上)
outDir string   定义输出文件的文件夹
outFile string   合并输出到一个文件
paths object   与 baseUrl 一同定义模块查找的路径,详细参考这里
preserveConstEnums boolean false 不去除枚举声明
pretty boolean false 美化错误信息
reactNamespace string "React" 废弃。改用jsxFactory
removeComments boolean false 去除注释
rootDir string 当前目录 定义输入文件根目录
rootDirs string []   定义输入文件根目录
skipDefaultLibCheck boolean false 废弃。改用 skipLibCheck
skipLibCheck boolean false 对库定义文件跳过类型检查(2.0 以上)
sourceMap boolean false 生成对应的 map 文件
sourceRoot string   调试时源码位置
strict boolean false 同时开启 alwaysStrictnoImplicitAnynoImplicitThis 和 strictNullChecks (2.3 以上)
strictNullChecks boolean false null 检查(2.0 以上)
stripInternal boolean false 不输出 JSDoc 注解
suppressExcessPropertyErrors boolean false 不提示对象外属性错误
suppressImplicitAnyIndexErrors boolean false 不提示对象索引隐式 any 的错误
target string "es3" 输出代码 ES 版本,可以是 ["es3", "es5", "es2015", "es2016", "es2017", "esnext"]
traceResolution boolean false 跟踪模块查找信息
typeRoots string []   定义文件的文件夹位置(2.0 以上)
types string []   设置引入的定义文件(2.0 以上)
watch boolean false 监听文件变更

一般情况下,tsconfig.json 文件只需配置 compilerOptions 部分。

{
"compilerOptions": {
"allowSyntheticDefaultImports": true, // 允许引入没有默认导出的模块
"module": "es2015",
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true,
"strict": true,
"target": "es5",
"lib": [
"dom",
"es5",
"es2015"
]
}
}

其中,allowSyntheticDefaultImports 是使用 vue 必须的,而设置 module 则是让模块交由 webpack 处理,从而可以使用 webpack2 的摇树。另外,加上allowJs,这样就可以一点点将现有的 js 代码转换为 ts 代码了。

如果,你在 webpack 中设置过 resolve -> alias,那么,在 ts config 中也需要通过 baseUrl + path 的方式来定义模块查找的方式。

<a name="tslint"></a>

欢迎关注公众号,进一步技术交流:

tsconfig.json配置说明的更多相关文章

  1. typeconfig.json配置说明

    如果一个目录下存在一个tsconfig.json文件,那么它意味着这个目录是TypeScript项目的根目录. 不带任何输入文件的情况下调用tsc,编译器会从当前目录开始去查找tsconfig.jso ...

  2. tsconfig.json配置

    什么工具看什么官网-一般都会有说明的 https://www.tslang.cn/docs/handbook/tsconfig-json.html 概述 如果一个目录下存在一个tsconfig.jso ...

  3. TypeScript 之 tsconfig.json

    https://m.runoob.com/manual/gitbook/TypeScript/_book/doc/handbook/tsconfig.json.html 如果一个目录下存在一个tsco ...

  4. tsconfig.json

    概述 如果一个目录下存在一个tsconfig.json文件,那么它意味着这个目录是TypeScript项目的根目录. tsconfig.json文件中指定了用来编译这个项目的根文件和编译选项. 一个项 ...

  5. The "tsconfig.json" file must have compilerOptions.sourceMap set to true

    在编译ionic项目的时候出现:Error:The "tsconfig.json" file must have compilerOptions.sourceMap set to ...

  6. TypeScript的配置文件 tsconfig.json

    //tsconfig.json指定了用来编译这个项目的根文件和编译选项 { "compilerOptions": { //compilerOptions:编译选项,可以被忽略,这时 ...

  7. tsconfig.json No inputs were found in config file

    Build:No inputs were found in config file '/tsconfig.json'. Specified 'include' paths were '["* ...

  8. [Angular] Omit relative path by set up in tsconfig.json

    For example, inside you component you want to import a file from two up directory: import store from ...

  9. TypeScript tsconfig.json(TypeScript配置)

    如果一个目录下存在一个tsconfig.json文件,那么意味着这个目录是TypeScript项目的根目录. tsconfig.json文件中指定了用来编译这个项目的根文件和编译选项. 一个项目可以通 ...

随机推荐

  1. 《深入实践C++模板编程》之二——模板类

    1.类的模板的使用 类,由于没有参数,所以没有模板实参推导机制. #include <stdexcept> template<typename T> class my_stac ...

  2. 【原创】大叔经验分享(72)mysql时区

    查看当前时区 > show variables like '%time_zone%'; +------------------+--------+ | Variable_name | Value ...

  3. 【html】 iframe 和 frameset 的区别

    一.两者的相同点和不同点 相同点: iframe 和frameset都是html布局的框架布局 不同点: iframe是一个内联框架,是在页面里生成内部框架 frameset定义一个框架集,包含多个子 ...

  4. C++ const关键字以及static关键字

    const可以用来修饰类中的成员函数以及成员变量以及类的对象 1.const修饰成员函数: 该函数是只读函数,不允许修改任何成员变量,但是可以使用类中的任何成员变量: 不允许修改任何非static的类 ...

  5. 经典算法,yuv与rgb互转,查表法,让你的软件飞起来

    代码的运算速度取决于以下几个方面 1. 算法本身的复杂度,比如MPEG比JPEG复杂,JPEG比BMP图片的编码复杂. 2. CPU自身的速度和设计架构 3. CPU的总线带宽 4. 您自己代码的写法 ...

  6. 微信小程序下拉刷新

    <config> { enablePullDownRefresh: true, navigationBarTitleText: "消息中心", } </confi ...

  7. 安装.Net Framework 2.0出现 Error 25015

    ---------------------------Microsoft .NET Framework 2.0 安装程序---------------------------Error 25015.安 ...

  8. 深入分析 Docker 镜像原理

    摘要:近日, DaoCloud 软件工程师孙宏亮在 CSDN Container 微信群为大家带来了 Docker 镜像原理的深度分享,本次分享的重点是 Docker 镜像,分享的内容主要包含两个部分 ...

  9. EF Code First 数据迁移操作

    打开执行命令窗体 1.EF Code First创建数据库 PM> Install-Package EntityFramework 2.EF Code First数据库迁移 2.1.生成数据库 ...

  10. 第八章· Redis API 开发

    Redis 开发 1.源码安装Python环境 Python官网:https://www.python.org/ #下载Python3.6.4安装包 [root@db03 ~]# wget https ...