[万字长文] 从 Vue 3 的项目模板学习 tsconfig 配置

在这里插入图片描述

前两天写了篇文章,喷 TypeScript 太过难用了,不过难用也得学啊,主要是因为我用过静态强类型语言,在项目规模变大的时候,确实对项目的质量把控是有帮助的,这可能就是后端程序员学习前端的迷信吧。反正我认识一个资深的前端朋友,他就反感且他自己也不会选择 TypeScript,他说自己很有自信能写对,也知道自己在写些什么,好吧。

那么 TypeScript 为什么那么痛苦呢?我觉得根本原因还是 javascript 这个语言,本身是一个弱类型动态语言,原生就不支持类型之类的事情,而 TypeScript 又选择了不破坏它的核心,只是渐进式增补类型到代码里。所以,就处处要照顾原有的一些设定。

好吧好吧,书归正言,本文打算介绍 Vue 3 项目中,如果运用 TypeScript 的话,如何配置 tsconfig.json。上次我们已经从官方脚手架,创建了一个 Vue 3 + TypeScript 的项目,这个脚手架其实很有价值,比如,里面就提供了一套 tsconfig 的配置,通过学习这个配置,我们可以了解一些 TypeScript 在项目中的正确用法。

一、tsconfig.json 的作用

我们在项目中使用 TypeScript 的时候,实际执行还是 javascript,所以要想执行,先需要编译,将代码进行转换:

tsc source.ts

这是处理单个代码文件的时候的做法,不过,一般我们项目里都有成百上千的源码文件,不可能一个一个去处理,这时候就需要用 tsconfig.json 告诉编译器,或者一些处理工具,如何处理 TypeScript 的问题。

通过此配置文件,我们可以告诉编译器,编译的选项,需要处理的文件集合,目标文件的目录等等。

{
   
  "compilerOptions": {
   
    "target": "ES5",             // 目标语言的版本
    "module": "commonjs",        // 指定生成代码的模板标准
    "noImplicitAny": true,       // 不允许隐式的 any 类型
    "removeComments": true,      // 删除注释 
    "preserveConstEnums": true,  // 保留 const 和 enum 声明
    "sourceMap": true            // 生成目标文件的sourceMap文件
  },
  "files": [   // 指定待编译文件
    "./src/index.ts"  
  ]
}

这是一个典型的 tsconfig.json

二、基本介绍

tsconfig.json 的顶层字段有:

  • compileOnSave 行为开关
  • compilerOptions 编译选项
  • exclude 排除一些文件
  • extends 继承一份配置
  • files 文件列表
  • include 包括的文件
  • references 项目引用,配置可以切成多块来分别设置
  • typeAcquisition 本项目中的自动类型检查,2.1 以上支持

最重要的是编译选项,常用的一些大概有:

{
   
  // ...
  "compilerOptions": {
   
    "incremental": true, // TS编译器在第一次编译之后会生成一个存储编译信息的文件,第二次编译会在第一次的基础上进行增量编译,可以提高编译的速度
    "tsBuildInfoFile": "./buildFile", // 增量编译文件的存储位置
    "diagnostics": true, // 打印诊断信息 
    "target": "ES5", // 目标语言的版本
    "module": "CommonJS", // 生成代码的模板标准
    "outFile": "./app.js", // 将多个相互依赖的文件生成一个文件,可以用在AMD模块中,即开启时应设置"module": "AMD",
    "lib": ["DOM", "ES2015", "ScriptHost", "ES2019.Array"], // TS需要引用的库,即声明文件,es5 默认引用dom、es5、scripthost,如需要使用es的高级版本特性,通常都需要配置,如es8的数组新特性需要引入"ES2019.Array",
    "allowJS": true, // 允许编译器编译JS,JSX文件
    "checkJs": true, // 允许在JS文件中报错,通常与allowJS一起使用
    "outDir": "./dist", // 指定输出目录
    "rootDir": "./", // 指定输出文件目录(用于输出),用于控制输出目录结构
    "declaration": true, // 生成声明文件,开启后会自动生成声明文件
    "declarationDir": "./file"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Charles@TechBlog

您的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值