typescript
1.类型推断
此时会报错Type 'number' is not assignable to type 'string' 即你不能把数字分配给字符串变量
2.类型注解
即提前设定好变量它的类型,赋值为其他将会报错
3. 类型断言
即提前预知结果的类型,进行一个人工干预,不然下面的result可能推断为undefined,undefined*5会报错
4.基础类型和联合类型
基础类型就是下面列出的几种
联合类型其实说白了就是一个或,一个并集,v4可以是string类型也可以是null类型
而对于v5这样也可以限定具体的值,比如下面这样写123,那么值赋值就不能是5
5.数组,元组,枚举
数组
两种不同的写法,约束这个数组内部的值的类型
比如第一个就是声明一个数值的数组,普通变量只加一个number,这里number后面加一个[],代表是数组
第二个是另一种数组的声明方式
元组
限定数据的个数以及其类型
如下,赋值第一个为string类型就会报错
加一个问号代表值可选
枚举
此时会有六个值,abc和012互为键值对
具体编译过程:
6.函数
void在函数中一般表示没有返回值
注意问号进行可选值设置,且可选值一般要放在必选值的后面
剩余参数是数组类型,所以这里要声明为一个数组,并且传参进来不可以传其他类型
7.接口
通常是进行一个对象的定义
就是像string,number那样,自己新定义了一个类型而已,然后可以进行类型声明的使用
8.类型别名
当有很多值都需要写 string|number时,可以用type进行一个类型别名的设定
9.泛型
下面这种定义只能传指定类型,但如果这个函数是一个通用函数呢
就可以使用下面这种泛型写法
其实就是传入一个类型,然后进行提前预设的泛型变量的类型替换,比如上面这个就是传数组,然后全部变为数组
这样写也是可以的,ts智能进行类型推断,调用是不写<>也是ok的
进阶
1.参数重载
同名函数可以根据参数的类型和个数实现不同的功能
2.接口继承
extends实现接口继承
3.类的修饰符
直接这样写会报错的
这样写在顶部才ok,此时这些属性是必选的
注意设置配置文件,会检查的更加严格,以防出现一些预料外的情况
设置可选属性,设置默认值:
私有属性
受保护属性
只能在当前类的内部或者子类中进行访问
子类可用:
但注意子类无法使用tempdata
静态属性
将属性设置给类本身而不是类的实例,以及注意书写顺序,static需要写在三个p的后面
上面这个private static 写法是综合写,意思是author此时既私有又静态
使用:
简写类型
4.存取器属性
但此时不可以console.log(u._password)因为是私有属性
5.抽象类
作为子类基类进行使用
用于规范格式,而不直接实例化
可以有抽象的也可以有不抽象的,都会被子类直接继承
6.类实现接口
并且可以继承多个接口,这在类是无法实现的
7.泛型类
就是传参不固定