原始类型
除了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.元组可以规定长度 / 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绝不返回任何类型