这是我参与「第四届青训营 」笔记创作活动的第10天
背景
-
动态类型语言——执行阶段确定类型的匹配
-
静态类型——先编译,再执行
——>
- 可读性增强:基于语法解析TSDoc,ide增强
- 可维护性增强:在编译阶段暴露大部分错误
- 多人合作的大型项目中,获得更好的稳定性和开发效率
-
弱类型语言——会进行类型转换
-
js的超集
-
包含于兼容所有JS特性,支持共存
-
支持渐进式引入与升级
基本语法
基础数据类型
对象数据类型
函数类型
特性——函数重载/编译时的多态
函数名相同,但是函数形参不同,编译器会根据调用参数的不一样来选择函数->同一函数完成不同的功能
——>
改正:
interface IGetDate{
(type:'string',timestamp?:any):string;
}
数组类型
补充类型
泛型
不预先指定具体的类型,而在使用的时候再指定类型的一种特性
泛型约束——限制泛型必须符合字符串
泛型参数默认类型
补充
type——类型别名
类型断言
字符串/数字 字面量
高级类型
联合/交叉类型
隐患:type只能是'history'或'love'
——>改进:
-
联合类型 IA | IB —— 一个值可以是集中类型之一
-
交叉类型 IA & IB —— 多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性
类型保护与类型守卫
解决——>(当两个类型完全没有任何重合点的时候)
函数返回值类型
工程应用
web
nodejs