文章描述
记录学习Typescript的一些知识点,增加自己的印象
Typescript是Javascript的一个超集,具体描述参考官网介绍
知识点
TS文件编译
需要先node安装ts编译器
然后执行tsc file.ts
随后会生成一个file.js即可运行
补充:tsc file.ts -w会动态监视此文件变动,然后动态编译,省去手动编译的麻烦,但只能监视单个文件
添加一个tsconfig.json文件,再执行tsc即可监视整个目录的修改状态并动态编译
TS配置文件
tsconfig.json是TS的配置文件
常用配置
| 配置名 | 例子 | 描述 |
|---|---|---|
| include | ./src/**/* | 只编译include下指定的目录中的TS文件,如目录不存在会报错,**表示任意目录,*表示任意文件 |
| exclude | ./src/hello/**/* | 不需要编译的目录可以配置在该项里 |
| extends | tsconfig.base.json | 继承一个别的配置文件 |
| compilerOptions | 看下方子选项 | 编译器配置选项,重要!!! |
| target | ES6 | 编译后的JS版本,默认是ES3,在这里查看支持的值 |
| module | ES6 | 编译后模块导入方式,默认CommonJS,在这里查看支持的值 |
| lib | dom | 依赖库配置项,最好不要去配置它,它已经默认设置好一些常用依赖库,除非你的代码不在浏览器环境中运行,那你可以修改它 |
| outDir | ./dist | 编译后输出目录,默认是与ts文件同级 |
| outFile | ./dist/app.js | 将所有ts文件编译在一起,输出为一个app.js文件(一般该工作都是让专业的打包工具去实现),该配置不支持打包CommonJS和ES6方式引入的模块,需要使用System或AMD方式,详情 |
| allowJs | false | 是否允许在ts文件中导入Js文件,默认false |
| checkJs | false | 检查Ts文件中导入的所有Js文件中语法、类型等是否有错,默认false,该项需要与allowJs配合使用,需要allowJs为true才可以开启该项 |
| removeComments | false | 编译后是否去除文件中的注释,默认false |
| noEmit | false | 不生产编译后的js文件,如果只是用ts去检查类型,那可以打开此设置 |
| noEmitOnError | true | 当编译时报错,就不生成js文件,可以打开,默认false |
| alwaysStrict | true | 设置编译后的文件是否使用严格模式,默认false,当有引入模块时,js默认进入严格模式,所以即使开启此项也不会再加上"use strict"了 |
| noImplicitAny | true | 设置不允许隐式any类型,默认false |
| noImplicitThis | true | 不允许不明确类型的this使用 |
| strictNullChecks | true | 严格检查空值 |
| strict | true | 严格检查总开关,默认false,建议设为true,开启所有严格检查,如果此项开启,其它严格检查配置就无需再开启了 |
TS基本类型
| 类型 | 例子 | 描述 |
|---|---|---|
| number | 1,2,3 | 任意数字 |
| string | a, abc, hello | 任意字符串 |
| boolean | true, false | 布尔值true或false |
| 字面量 | 男,女 | 限定变量的值只能是列举出来的其中的值 |
| any | * | 任意类型 |
| unknown | * | 类型安全的any |
| void | 空值 | 空或者undefined |
| never | 没有值 | 不能是任何值 |
| object | {name: "xiaomin"} | 任意对象 |
| array | [1,2,3] | 任意数组 |
| tuple | [1,2,3] | 固定长度数组,TS新增 |
| enum | enum{A, B} | 枚举,TS新增 |