目录
1.Ts会在没有明确的指定类型的时候推测出一个类型,这就是类型推论
2.如果你声明变量没有定义类型也没有赋值,这时候TS会推论成any类型
type 关键字,可以给一个类型定义一个名字,多用于复合类型
一、类型推论
1.Ts会在没有明确的指定类型的时候推测出一个类型,这就是类型推论
let str = '小胖' //此时str被推论成string类型
2.如果你声明变量没有定义类型也没有赋值,这时候TS会推论成any类型
let str str = '小胖' str = 123 str = true //str此时被推论为any类型
二、类型别名
type 关键字,可以给一个类型定义一个名字,多用于复合类型
定义类型别名
type test = string let str:test ='小胖' //此时test就相当于是string类型
定义函数别名
type fun = () => string let f:fun = () => '我是小胖'
定义联合类型别名
type str = number | string let str1: str = 123 let str2: str = '小胖' console.log(str1, str2); //结果为 123,小胖
定义值的别名
type str = 123 | string let str1:str = 123 //此时只能赋值123,不能赋值其他数字类型的 let str2:str = 3 //报错
type 和 interface 的区别
1.interface可以继承,type 只能通过 & 交叉类型合并
2.type 可以定义联合类型并且可以使用一些操作符,而interface不行
3.interface 遇到重名的会合并,而type 不行
三、never类型
Ts使用 never 类型来表示不应该存在的状态
type A = number & string //A不可能是数字类型,又是字符串类型,此时为never类型
type A = number | string | never //此时A只有number和string联合类型,never不存在
function error():never {
throw new Error('报错')
} //函数必定会抛出异常,所以不会有返回值
function loop():never {
while (true) {
}
} //函数陷入死循环,所以不会有返回值