当前位置: 首页 > news >正文

学习ts(四)联合类型、交叉类型、类型断言

联合类型

使用联合类型定义属性和方法,只要符合其中一种即可

let myPhone: string | number = '010-7788'
// let myPhone1: string | number = true   因为没有包含boolean值 会报错const fn = (something: number | boolean): boolean => {return !!something
}console.log(fn(1))
console.log(fn(true))

!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false
隐式转换:a = “1234” - 0 //转换为数字 b = 1234 + “” //转换为字符串

交叉类型

需要符合两种类型,相当于extends关键字

interface ModalA {name: string,age: number
}interface ModalB {sex: number
}const person: ModalA & ModalB = {name: '123',age: 12,sex: 1
}
const printData = (person: ModalA & ModalB): void => {console.log(person.name)console.log(person.age)console.log(person.sex)
}printData(person)

类型断言

语法:值 as 类型 :value as string 或 <类型>值: <string>value

在这里插入图片描述
在这种情况下,由于type可能是a也可能是b,不一定存在sex属性,所以可以加一个类型判断,是b的时候返回sex属性

interface ModalA {name: string,age: number
}interface ModalB {sex: number
}const person = (type: ModalA | ModalB): number => {return (type as ModalB).sex
}

类型断言只能够「欺骗」TypeScript 编译器,无法避免运行时的错误
类型断言是不具有影响力的。可以通过编译,但是并不会影响结果,因为编译过程中会删除类型断言

function toBoolean(something: any): boolean {return something as boolean;
}toBoolean(1);
// 返回值为 1

as const

对于字面量的断言,与与const直接定义常量是有区别的
如果是普通类型跟const声明是一样的
在这里插入图片描述
如果是引用类型,const定义的是可以修改其中的值的,但是as const 是不可修改的
在这里插入图片描述

http://www.lryc.cn/news/129875.html

相关文章:

  • Linux 内核与架构速查
  • 【Java 动态数据统计图】动态数据统计思路案例(动态,排序,containsKey)五(117)
  • 区块链碎碎念
  • 4.物联网LWIP之C/S编程
  • 在 PyTorch 中使用关键点 RCNN 进行人体姿势估计--附源码
  • Dubbo及Zookeeper安装
  • ZK-C3595、ZK-C35100、ZK-C40100、ZK-C40110超越离合器
  • Azure共享映像库构建VM镜像
  • 【C++】AVL树(平衡二叉树)
  • 「UG/NX」Block UI 面收集器FaceCollector
  • 剑指Offer61.扑克牌中的顺子 C++
  • vue实例挂载过程
  • 【第八讲---视觉里程计2】
  • 设置PHP的fpm的系统性能参数pm.max_children
  • vue3setup标签语法 + vite + delfin 递归组件实现无限评论功能
  • optee中如何开启或关闭所有中断的
  • 基于STM32+微信小程序设计的宠物投喂装置(腾讯云IOT)
  • 2023年上半年软考分数线 软考分数线公布时间
  • centos7的flink安装过程
  • 商城-学习整理-高级-性能压测缓存问题(十一)
  • PHP 三元 !empty 而不是评估为真或假 可用isset()
  • 星火大模型 VS FuncGPT(慧函数), 谁更胜一筹?
  • 使用 Python 获取 Redis 数据库中的所有键
  • C的进阶C++学习方向
  • 【仿写框架之仿写Tomact】二、初始化阶段加载项目中所有servlet类对象
  • Linux实用运维脚本分享
  • JMeter 特殊组件-逻辑控制器与BeanShell PreProcessor 使用示例
  • 时序预测 | MATLAB实现SA-ELM模拟退火算法优化极限学习机时间序列预测
  • Ubuntu 连接海康智能相机步骤(亲测,成功读码)
  • sass笔记