JS 定义变量为动态类型
TS 定义变量为静态类型
TS优势:
1.在开发过程中,可以发现潜在问题
2.编译器更好的代码提示
3.代码语义更清晰易懂
TS分为基础类型和对象类型
基础类型:boolean,number,string,void,undfined,symbol,null,Date
对象类型:{},Class,function,[]
类型注解(type annotation):
我们来告诉TS变量是什么类型
例: let count: number;
类型推断(type inference):
TS会自动尝试分析变量得类型
例: let countInference = 123;
TS可以自动分析变量类型 ? null : 使用类型注解
TS函数也要使用类型注解(number、void、never(这个函数永远不可能执行到最后)、解构的话类型注解也需要解构)
数组和元组(tuple)
数组 例:const arr: (number | string)[] = [1,'2',3]
当数组长度和类型都为固定时,那么可以将其变为元组进行管理
可以在csv或者excel导出文件时使用元组进行管理
元组 例:const teacher : [string,string,number] = ['xiaoyang','xiaosui',18];
type类型别名和interface接口的区别
type可以代表基础类型而interface只能代表函数或对象
例: interface Person{
name:string;
age?:number; ?: 意思是可有可无的属性 前面如果加readonly代表只读
[propName: string]: any; 可以多出其他任意类型属性
}
对象字面量直接赋值会进行强校验,如果放到变量里在赋值就不会。
类: 重写 继承 而super是在重写父类的方法时还需要调用原父类的方法时使用
public 允许我在类的内外被调用
private 允许在类内被使用
protected 允许在类内及继承的子类中使用
可以通过getter来间接获取类中私有属性
可以通过setter来间接保护(改变)类中私有属性
abstract抽象类 只能被继承不能被实例化