原谅我前段时间的摆烂,我一定会把以前缺失的知识补回来
先来看今天的内容:
TS与JS的差异:
TS是JS的超集(说白了就是,TS功能比JS强大),具体体现在它可以支持动,静态类型,可以在编译期间发现并纠正错误,而且它不允许改变变量的数据类型(为啥啊?因为当对变量的声明和赋值同时进行时,TS 编译器会自动判断变量的类型)
然后就是编程语言老套路,数据,函数,类
TS基础类型
1,boolean,number,string
2,枚举:enum
3,any,unknown,void
4,never//防御性编程
5,数组类型 []
6,元组类型 tuple
函数类型:
TS定义函数类型时要定义输入参数类型和输出参数类型输入参数:参数支持可选参数和默认参数输出参数:输出可以自动判断,没有返回值时默认为void类型函数重载:名称相同但参数不同,可以通过重载支持多种类型
interface
定义:接口是为了定义对象类型
特点:
可选属性:
只读属性:readonly
可以描述函数类型
可以描述自定义属性
总结:接口非常灵活 duck typing
类:
定义:写法和JS差不多,增加了一些定义
特点:增加了public,private,protected修饰符
抽象类:只能被继承,不能被实例化作为基类,抽象方法必须被子类实现
interface约束类,使用implement关键字
高级类型
1,联合类型"|"
let num:number|string
num=8
num='eight'
看代码就知道,它联合类型可以使得数据类型不局限于单一的一个类型,让它可以拥有两个及以上的数据类型特性
2,交叉类型
interface Person{
name:string
age:number
}
type Student =Person &{grade:number}
const stu:Student
stu.grade
有点像继承,不懂,再看看
类型断言
允许你覆盖它的推断,并且能以你任何你想要的方式分析它,这种机制被称为「类型断言」。
4,类型别名:(type VS interface)
定义:给类型起个别名
相同点:
1,都可以定义对象或函数
2,都允许继承
差异点:
1,interface是TS用来定义对象,type是用来定义别名方便使用
2,type可以定义基本类型,interface不行
3,interface可以合并重复声明,type不行
泛型
基本定义:
1,语法是<>里面写类型参数,一般用T来表示
2,使用时有两种指定类型:
1)要定义使用的类型
2)通过TS类型推断,自动推导类型
3,泛型的作用是临时占位,之后通过传来的类型进行推导
OK,今天的基础内容到这里就结束啦!!!