原始类型

除了js中的boolean number string null undefined bigint symbol还有一个void
js中null代表这里有值,但是空值,undefined代表这里没有值
ts中默认情况下null undefined是其他类型的子类
ts中函数无返回值,就会被隐式推导为void

数组和元组

元组提高了数组结构的严谨行

  • 每个位置都可以进行类型标注
  • 避免出现越界访问 ```javascript / 原始 string boolean number null undefined bigint symbol /

// 数组的类型标注 const arr1: string[] = [‘1’,’2’] const arr2: Array = [‘1’,’2’]

// 元组代替数组

/ 1.元组可以规定长度 / const arr3: string[] = [‘w’,’b’,’t’] console.log(arr3[999]);

const arr4: [string,string,string] = [‘w’,’b’,’t’] // console.log(arr4[99]); //报错

/ 2.元组可以规定每个位置的类型 / const arr5: [number,string,boolean] = [111,’wbt’,true]

/ 3.每个位置可选 后面标记? ts会自动给这个位置标注 (类型|undefined) / const arr6: [number,string?,boolean?] = [1,,]

```

interface 和 type

interface 用来描述对象、类的结构,而类型别名用来将一个函数签名、一组联合类型、一个工具类型等等抽离成一个完整独立的类型
拓展 interface extends type: &
向类型添加字段 interface可以声明类型名一样的合并 type不行

Any never unknow和类型断言

内置类型Any never unknow

any 兼容所以任何类型 任何类型也兼容any
unknow跟any相似,unknow可以接受任何类型,但只能赋给any和unknow

any 就像是 “我身化万千无处不在” ,所有类型都把它当自己人。而 unknown 就像是 “我虽然身化万千,但我坚信我在未来的某一刻会得到一个确定的类型

never更像一个虚空类型,不像void一样,返回空,而never绝不返回任何类型