前言:

昨天我们学习了 TS 的数据类型,不知道大家回去以后练习没练习,如果你练习了一定会发现一个问题,我们的 TS 好像和 JS 不太一样

JS 写完之后直接就可以放到页面上,就可以用了,而我们的 TS 需要用 tsc 编译一下,编译为 JS 才能在页面中使用

这时就会有同学说了,诶呀,六扇老师,这也太麻烦了吧!

别急,好好阅读今天的文章,关于 TS 的编译选项

编译选项:

自动编译文件:

编译文件时,使用   -w  指令后, TS 编译器会自动监视文件的变换,如果 TS 文件变化会自动重新进行编译

tsc xxx.ts -w

图片示例:

自动编译成功了,问题也就来了,我们发现这样虽然是不用手动编译了,但我有两个 TS 文件呢,我需要打开两个窗口,输入两遍  tsc xxx.ts -w 那我要是有十个呢,百个呢?

自动编译整个项目:

我们在实际开发,写项目的时候,都看过配置文件吧,我们的 TS 也有,叫 tsconfig.json

tsconfig.json 是一个 JSON 文件,添加完配置文件之后,只需要在命令行中输入 tsc -w 即可完成对整个项目的自动编译

那怎么创建 tsconfig.json 文件呢,有的编辑器会自带,右键就可以创建了

如果不自带,自己新建文件创建就行了,创建完的 tsconfig.json 文件放那就行,打开命令行直接输入 tsc -w

这时我们项目下的所有 TS 文件都会被自动编译

tsconfig.json的配置选项:

虽然整个项目都被编译了,但我们正常开发的时候肯定是用不到整个项目编译的,都是指定某个文件下,或几个文件,这时就需要配置选项了

include:

是我们最常用的配置选项,指定被编译文件的目录

默认值: [ " **/* " ]

** 表示 任意目录  * 表示 任意文件 " src/**/* " 就表示 src 下的任意目录任意文件

exclude:

上边说了, include 表示包含指定的意思,而我们的 exclude 正好相反,表示不包含

不希望被编译

什么意思呢,比如说我们在 src 里面又新加了一个 hello 文件夹,里面有一个 ts 文件,这时在执行那肯定都被编译,但我不想让 hello 目录下的 ts 文件被编译 怎么做

如图,只有 src 目录下的 app.ts 被编译了

exclude 是可选的,一般的话不需要写,它默认值是 ["node_modules","bower_commponents","jspm_packages"]

extends:

定义被继承的配置文件

”extends“:”./configs/base“

当前配置文件中会自动包含 config 目录下 base.json 中的所有配置信息

files:

指定被编译文件的列表,和 inclued 差不多 不过一个是文件 一个是目录

"files":[

"core.ts",

"sys.ts",

.....

]

compilerOptions:

conmpilerOptions 决定了编译器如何对我们的 ts 文件进行编译

里面有很多的子选项

target

用来设置 ts 代码的目标版本

可选值:

ES3,ES5,ES5/ES2015,ES7/ES2016,ES2017,ES2018,ES2019,ES2020,ESNext

语法:
"compilerOptions":{
"target": "ES3",
}

 module

用来指定使用的模块化规范

可选值:

none,commonjs,ES5/ES2015,ES7/ES2016,amd,system,ES2020,ESNext

语法:

"compilerOptions":{
"module": "ES2015",
}
lib

用来指定项目中所要用的库

一般情况下不需要改,正常在浏览器当中运行的代码 lib 是不需要设置的

语法:

"compilerOptions":{
"lib": ["es5","es6"."dom".....],
}
outDir

我们编译完 ts 生成 js 文件之后,我们的 js 文件是和 ts 文件在一起的,在正常开发的时候我们不希望它俩生成在同一个文件下边,就用到 outDir 了

语法:

"compilerOptions":{
"outDir": "./dist“,
}

outFile

可以将我们的代码合并为一个文件

语法:

"compilerOptions":{
"outFile": "./dist/app.js“,
}

allowJs  chenckJs removeComments noEmit noEmitOnError

allowJs 意思是,是否对我们的 js 文件进行编译,默认是 false

chenckJs 意思是,是否检查 js 代码符合 ts 语法规范,默认是 false

removeComments 意思是,是否移除注释
noEmit 意思是,执行编译,但不生成编译之后的文件,通常用来检查代码规范的

noEmitOnError 意思是,当有错误的时候不生成编译后的文件,避免错误代码编译

接下来的选项都是和 TS 语法检查相关的

alwaysStrict

我们都知道在我们写 js 代码的时候,都会有一个严格模式,在前边加上 “use strict” 就行了,那用 ts怎么加呢,设置的就是 alwaysStrict

语法:

"alwaysStrict":false (默认是 false)

noImplicitAny

前文说了,当 ts 中出现没设定类型的变量时候,会默认为any noimolictAny为true之后则不允许该值是 any

语法:

"noImplicitAny": true (默认是 false)

noImplicitThis

不允许不明的 this。我们在写函数的时,有时候函数的 this 不明,noImplicitThis 设置为 true 可以防止不明的 this 编译

语法:

"noImplicitThis":true (默认是 false)
strictNullChecks

严格的检查空值

语法:

"strictNullChecks": true(默认是 false)
strict

ts 配置中所有严格检查的总开关,值为 ture 上边的就可以都不写了,全部为 ture,false 同理

语法:

"strict": false(默认是 false)

开发建议为 true ,开启所有的严格检查,使我们的代码更严谨,不想要那个检查再单独设置为 false

好关于配置选项我们就先讲这么多,其实除此之外还有许多的配置,感兴趣的大家可以去查查官方文档,这里是六扇有伊人我们明天再见!

个人博客链接:http://blog.qianbaiyv.cn/get/my/blog/details/2311887075%40qq.com/150

自学 TypeScript 第二天 编译选项的更多相关文章

  1. 孤荷凌寒自学python第二十九天python的datetime.time模块

     孤荷凌寒自学python第二十九天python的datetime.time模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) datetime.time模块是专门用来表示纯时间部分的类. ...

  2. 孤荷凌寒自学python第二十八天python的datetime.date模块

     孤荷凌寒自学python第二十八天python的datetime.date模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.toordinal() 此方法将访问从公元1年1月1日至当 ...

  3. 孤荷凌寒自学python第二十七天python的datetime模块及初识datetime.date模块

    孤荷凌寒自学python第二十七天python的datetime模块及初识datetime.date模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.datetime模块 dateti ...

  4. 孤荷凌寒自学python第二十六天python的time模块的相关方法

    孤荷凌寒自学python第二十六天python的time模块的相关方法 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 要使用time模块的相关方法,必须在文件顶端引用: import tim ...

  5. 孤荷凌寒自学python第二十五天初识python的time模块

    孤荷凌寒自学python第二十五天python的time模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 通过对time模块添加引用,就可以使用python的time模块来进行相关的时间操 ...

  6. 孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘

    孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天发现了python的类中隐藏着一些特殊的私有方法. 这些私有方法不管我 ...

  7. 孤荷凌寒自学python第二十三天python类的封装

    孤荷凌寒自学python第二十三天python类的封装 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.从怎么样访问类的内部代码块中定义的私有属性说起 类中定义的私有属性和私有方法是无法被 ...

  8. 孤荷凌寒自学python第二十二天python类的继承

    孤荷凌寒自学python第二十二天python类的继承 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) python中定义的类可以继承自其它类,所谓继承的概念,我的理解 是,就是一个类B继承自 ...

  9. STM32单片机应用与全案例实践 /stm32自学笔记 第二版 pdf

    STM32单片机应用与全案例实践pdf https://pan.baidu.com/s/16WrivuLcHvLTwS__Zcwl6Q 4rj3 stm32自学笔记 第二版 pdf https://p ...

  10. typescript 第二部分

    ts 中不允许变量同名 函数定义的两种方式 第一种:命名函数 = 声明式定义 function fn(){} 第二种:匿名函数 var fn = function(){} function fn(x: ...

随机推荐

  1. 并发编程Bug起源:可见性、有序性和原子性问题

    以前古老的DOS操作系统,是单进行的系统.系统每次只能做一件事情,完成了一个任务才能继续下一个任务.每次只能做一件事情,比如在听歌的时候不能打开网页.所有的任务操作都按照串行的方式依次执行. 这类服务 ...

  2. gem5 使用记录,对例子中helloobject的理解

    gem5中有一个 hello的例子,不是hello world那个,在src/learning-gem5/part2里面,这是虽然是个简单的例子但包含的要素挺多挺全. 整个结构是src下面有一个hel ...

  3. Lua 支持虚函数的解决方案

    概述 lua本身没有提供类似C++虚函数机制,调用的父类方法调用虚函数可能会出现问题. 问题分析 分析这段代码和输出 local Gun = {} -- 示例,实际应用还要考虑构造,虚表等情况 fun ...

  4. Prometheus 监控 Kubernetes Job 资源误报的坑

    转载自:https://www.qikqiak.com/post/prometheus-monitor-k8s-job-trap/ 昨天在 Prometheus 课程辅导群里面有同学提到一个问题,是关 ...

  5. 10.第九篇 kube-scheduler 安装及验证

    文章转载自在:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483830&idx=1&sn=787de8d ...

  6. 单机部署minio,设置Nginx代理,配置https(TLS)访问

    安装 下载地址:https://dl.min.io/ # 创建目录 mkdir -p /usr/local/minio/{data,bin,etc} # 下载minio wget https://dl ...

  7. 在Portainer上管理其他docker主机(这只是其中一种方式),另一种方式看这个文档:使用Portainer管理其他主机的docker应用有两种方式

    其他主机开启远程连接docker端口 需要设置一下2375端口的监听.通过修改docker配置文件方式进行监听. 修改配置文件修改监听端口 使用Centos7安装的docker,所以下面的配置是适用于 ...

  8. 解决inode满

    登陆服务器运行df -i 然后运行 for i in /*; do echo $i; find $i |wc -l|sort -nr; done 看看每个文件夹下面的数量 最后发现是/var/spoo ...

  9. useContext 解决函数父子组件传值

    1在父组件外部定义变量A创建上下文,2在父组件使用变量A<A.Provider> <子组件/> </A.Provider> ,3.在子组件中创建变量使用useCon ...

  10. 1_Linux

    一. Linux介绍 1.1 引言 在学习Linux之前, 大家先了解开发环境,生产,测试环境 开发环境: 平时大家大多是在Windows或者Mac操作系统下去编写代码进行开发,在开发环境中安装大量的 ...