dayn,

113 阅读2分钟

原谅我前段时间的摆烂,我一定会把以前缺失的知识补回来

先来看今天的内容:

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

有点像继承,不懂,再看看

类型断言

允许你覆盖它的推断,并且能以你任何你想要的方式分析它,这种机制被称为「类型断言」。

image.png

4,类型别名:(type VS interface)

定义:给类型起个别名

相同点:

1,都可以定义对象或函数

2,都允许继承

差异点:

1,interface是TS用来定义对象,type是用来定义别名方便使用

2,type可以定义基本类型,interface不行

3,interface可以合并重复声明,type不行

泛型

基本定义:

1,语法是<>里面写类型参数,一般用T来表示

2,使用时有两种指定类型:

1)要定义使用的类型

2)通过TS类型推断,自动推导类型

3,泛型的作用是临时占位,之后通过传来的类型进行推导

image.png

OK,今天的基础内容到这里就结束啦!!!