乐趣区

关于前端:TS联合类型类型断言类型推断

联结类型

在理论开发中,咱们接管的变量可能不是一个固定的数据类型,而是动静的多个数据类型,此时用单个固定的数据类型去接管很显著是不行的,为了解决这种可能会接管多个不同数据类型的变量就须要用到联结类型。联结类型示意取值能够为多种类型中的一种。
语法:let 变量名 : 数据类型 | 数据类型 2 = 值

let str : string | number = '世界古代设计史'
 console.log(str);  // 世界古代设计史
 str = 100
 console.log(str);  // 100
//  str = true   // 报错

在函数中应用联结类型

// 该函数能够传入数字类型和字符串类型,返回值为字符串类型
const getString = (str:number|string):string =>{
    // return str  // 打印 100 报错 返回的类型必须是字符串
    return str.toString()  // 转字符串,返回字符串类型}
console.log(getString(100));

类型断言

类型断言也就是通知编译器,我晓得本人是什么类型,也晓得本人在干什么。
类型断言的语法:
1、< 类型 > 变量名 (<number[]>val)
2、变量名 as 类型 (val as number[])

类型断言也就是在编译的时候判定这个值是什么类型的,如果是的话就做什么操作。

let val : number[] = [100,200,300]  
// 如果 val 存在,那么它是一个数组类型的,输入 val.length  
console.log((val as number[]).length);   // 打印 3

能够通过类型断言来做对应的操作,比方遍历一个数组:

let val : number[] = [100,200,300]  
// 如果 val 存在,那么它是一个数组,遍历数组
(<number[]>val).forEach(el=>{console.log(el);   // 打印 100,200,300
})

类型断言能够多重嵌套,比方 双重类型断言
如果 val 存在,那么它是 any 类型的,如果 val 存在并且是 any 类型的,它则是 number[] 类型的,打印数组的长度

console.log(((val as any) as number[]).length);
// 打印 3

类型推断

类型推断: 在没有明确指定类型的时候,揣测出一个类型。
申明一个变量,这个变量没有定义数据类型,零碎会依据变量的值主动推断它是什么类型,并且以此类型为标准。

// 在没有明确指定类型的时候揣测出一个类型
let txt = 100    // 推断 number 类型
// txt = '东方不败' // 赋值 string 类型 报错
console.log(txt);  // 打印 100

如果申明的变量没有赋值,那么这个变量为 any 类型,any类型的变量能够是任何数据类型。

let txt2   // 变量申明了没赋值 any 类型
txt2 = 200
txt2 = '世界古代设计史'
console.log(txt2);

案例源码:https://gitee.com/wang_fan_w/ts-seminar

如果感觉这篇文章对你有帮忙,欢送点亮 star

退出移动版