1、TypeScript VS JavaScript Ts 是 Js 的超集,用于解决大型项目的代码复杂性;强类型,支持静态跟动态类型;可以在编译(在 IDE 上即可)期间发现纠正错误;不允许改变变量的数据类型。
Js是一种脚本语言,用于创建动态网页;动态弱类型语言;只能在运行时发现错误;变量可以被复制为不同的类型。
Ts 是 JS 增强了类型安全(跟 Java 、 c++ 一样有安全属性)、有完整的工具链,提高了生产力。
2、Ts 基础类型:boolean、number、string ; enum ; any、unkonwn、void;never(永不存在的值的类型,eg:总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型);数组类型[](可以根据基础类型增加数组标识);元组类型 tuple 。
3、函数类型: Ts 定义函数类型时要定义输入参数(可选/默认)类型和输出类型(可以自动推断,没有返回值时,默认为void);重载:名称系统但参数不同,可以通过重载支持多种类型。
4、interface:接口是为了定义对象类型。 特点:可选属性、只读属性(readonly)、可描述函数类型、可描述自定义属性 eg:
interface Person{
name:string
age:number
id:number
}
const p1 = {
name:'Ivy',
age:20,
id:33
}
5、类 增加了 public、private、protected,支持ES6引入的类的关键字;
抽象类:只能被继承,不能被实例化 eg:
abstract class instrument{
public name:string
construction(name:string){
this.name = name
}
pubilc abstract Music():void
}
class violin extends instrument{
construction(name:string){
super(name)
}
}
6、高级类型 (1)联合类型 | (2)交叉类型 &
(3)类型断言:一种允许你覆盖的推断,并且能以你任何你想要的方式分析它的机制; (4)类型别名( type ):给类型起别名 vs interface:都可以定义对象、函数,允许继承;type 可以定义基本类型,interface 不能;interface 可以合并重复声明,type 不能。
7、泛型:需要有一个类型解决输入输出可关联的问题(类似于编写一个不同类型都能用的模板) 两种指定方法:(1)定义要使用的类型;(2)通过 ts 类型推断,自动推导类型。 其作用是临时站位,之后通过传来的类型进行推导。
泛型工具类型-基础操作符:typeof 获取类型;key 获取所有键;in 遍历枚举类型; T[K] 索引访问;extend 泛型约束