首页 > 其他分享 >【TS】联合类型--类型断言--类型推断

【TS】联合类型--类型断言--类型推断

时间:2023-01-29 21:12:04浏览次数:57  
标签:console log val -- TS number 类型 100

联合类型

在实际开发中,我们接收的变量可能不是一个固定的数据类型,而是动态的多个数据类型,此时用单个固定的数据类型去接收很明显是不行的,为了解决这种可能会接收多个不同数据类型的变量就需要用到联合类型。联合类型表示取值可以为多种类型中的一种。
语法: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

标签:console,log,val,--,TS,number,类型,100
From: https://www.cnblogs.com/wang-fan-w/p/17073830.html

相关文章

  • Redis批量查询
    Redis批量处理在开发中,有时需要对Redis进行大批量的处理。比如Redis批量查询多个Hash。如果是在for循环中逐个查询,那性能会很差。这时,可以使用Pipeline(管道)。Pip......
  • 【TS】函数和函数类型
    在使用函数的时候,通常会给函数传值,或者给函数一个返回值调用,这个时候就会涉及到函数类型。函数类型分为两个方面:1、函数参数2、函数返回值语法:function函数名(参数......
  • LCM Walk HDU - 5584
    https://vjudge.net/problem/HDU-5584题意:(x,y)可以走到(x+lcm(x,y),y),或(x,y+lcm(x,y))给定终点(ex,ey),问从起点到终点走了多少步?解:先按照题意模拟:设d=gcd(x,y),则再设......
  • 【TS】class类和接口
    class可以用来做数据的存储与回显,能将页面的数据分离出来并提取到class内,函数也可以抽离到class,实例化class进行调用。ts中的class类与js的class类基本相同,不同点在于ts的c......
  • C#中new的三种用法
    1.运算符:创建对象实例 ClassC1=newClass();2.修饰符:在派⽣类定义⼀个重名的成员,隐藏掉基类中的成员publicclassProgram:BaseClass{newpublicclassTe......
  • 2023美国大学生数学建模竞赛ABCDEF题思路汇总 美赛建模思路
    1赛题思路(赛题出来以后第一时间分享)企鹅qun7144526212023年美赛比赛日期和时间报名截止日期:美国东部时间2023年2月16日星期四下午3:00前。(北京时间2023年2月17日......
  • 【TS】接口和接口继承
    接口接口也相当于语法规范,在使用ts编写的时候,需要注重的就是数据类型以及语法规范,恰好这里提供了一个接口,在进行传值的时候,传值的类型以及字段必须符合我们预期的类型规范......
  • 锤子手机希望越来越渺茫的原因是什么?
    昨天晚上7点半多一点,锤子科技CEO罗永浩第5次为了发布新手机站在台上。和往常一样,两个多小时的发布会糅合了产品演示、对口相声,还有罗永浩的口头禅“听明白了么?”这......
  • 区分Python开发高级和初级工程师的五个技巧汇总
    1.引言在本文中,我们将以高级方式而不是初级方式来研究五种解决常见编码问题的方法。每一个编码问题都源于某个常见的实际问题抽象,许多问题在日常工作中反复出现多次,熟练掌......
  • 【TS】基础类型
    在ts中定义基础类型,语法:let变量名:数据类型=值//布尔类型----booleanletflag:boolean=trueflag=false在赋值的时候,不能赋值定义外的数据......