这是我参与「第四届青训营 」笔记创作活动的第八天
1. 什么是TypeScript
1.1 发展历史
1.2 什么是TypeScript
动态类型:在执行阶段会执行类型的匹配/检验
静态类型:会提前检验,使用时得先编译,比如python和java
弱类型语言:执行的时候会执行隐式类型转换
与JS的区别
2. TypeScript基本语法
2.1 基础数据类型
2.2 对象类型
约定 :在TypeScript中,会在前面带一个大写的 I 用来表示这是一个类型,用于和普通的对象或者类区分
any
any是JavaScript中特有的一个数据类型,顾名思义,代表所有,任何
2.3 函数类型
在实际开发中这样写可能会非常的复杂,可读性也会变得非常的差,所以可以沿用interface的方法
区别就是要对参数和返回值定义类型,如果是箭头函数,返回值类型前也要加一个箭头
函数重载
也可以使用interface简写,但是会出现一些问题
2.4 数组类型
数组其实就是一个扩展的对象
泛型里的record其实就是一个对象类型的简化写法
在一般情况,第一种和第二种用的比较多。
2.5 TypeScript补充数据类型
2.6 TypeScript泛型
这里的 T 实际上就是泛型
泛型的高级语法
2.7 类型别名&类型断言
类型别名
可以进行复用
类型断言
2.8 字符串/数字 字面量
就是限定了取值的意思?
3. 高级类型
3.1 联合/交叉 类型
一个小case,在为书籍列表编写类型的时候,类型声明会很繁琐存在较多的重复
可以对上面的类型声明代码进行联合/交叉类型的改进
3.2 类型保护与类型守卫
以下代码在js中可以运行,但是在ts中会报错
类型守卫
类型保护
应用到之前的书籍case
3.3 case
传统实现,会有污染
以下方式穗儿没有污染但也有一定的问题
可以借用泛型来实现
3.4 case+
最佳实现
4. TypeScript的工程应用
webpack
babel