【typescript】特殊符号用法(?:)(??)(?.)(!)(!!)

一. 问号+冒号(?:)

1.可以作为对象类型的可选属性,如:

interface Person{name : string;age?: number;
}const person1 : Person = {name:"zien"}
const person2 : Person = {name:"sad", age:18}
console.log("person1 = ", person1.name, person1.age)
console.log("person2 = ", person2.name, person2.age)

2.可以作为函数参数列表中的可选参数,如:

function persionFun(name : string, age ?: number){console.log("persionFun = ", name, age)
}persionFun("clz", 13)
persionFun("sad")

上面两个例子的输出结果如下:

二.两个问号(??)

        判断变量是否为空,如果变量为空,用后面的默认值初始化对象。

const v1 = null
const v2 = 2const v3 = v1 ?? 3
const v4 = v2 ?? 4console.log("v3 = ", v3)
console.log("v4 = ", v4)

因为V1为空,所以用了默认值3来初始化对象V3
因为V2不为空,所以用V2的值2来初始化V4

3.问号+点(?.)

        对象不为空才调用对象的属性。如果对象为空则返回undefined。

function persion(data: any){console.log("persion = ", data?.name?.age)// 其实类似这种写法,判断了data和data.name有值才继续执行下去// if(data && data.name){//     console.log("persion = ", data?.name?.age)// }
}

输出结果undefined~ 如果把问号去掉,就会因为报错而导致程序终止执行了。

4.问好+冒号,分开(a?b:c)

其实就是普通的三目运算符。

const v1 = 1
const v2 = 2const value = v1 > v2 ? "greater" : "less"console.log("value = ", value)

5.感叹号(!)

        这个就是简单的对值取反,不详细说了……

6.两个感叹号(!!)

        把对象类型强行转换为布尔型。

const v1 = 0
const v2 = 1
console.log("v1 = ", !!v1)
console.log("v2 = ", !!v2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/459455.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Pillow来生成简单的红包封面

Pillow库(Python Imaging Library的后继)是一个强大而灵活的图像处理库,适用于Python。Pillow 库(有时也称 PIL 库) 是 Python 图像处理的基础库,它是一个免费开源的第三方库,由一群 Python 社区…

泰克示波器——TBS2000系列界面整体介绍

目录 1.1 通道区域面板标识1.2 示波器测试输出(检测探针与设置的好坏)1.3 面板其他快捷按钮1.4 波器整体界面 1.1 通道区域面板标识 在通道面板的下方标识有示波器的通道属性以及参数值,如我使用的型号为“TBS2104X”的示波器,面…

跨境电商新风潮:充分发挥海外云手机的威力

在互联网行业迅速发展的大环境下,跨境电商、海外社交媒体营销以及游戏产业等重要领域都越来越需要借助海外云手机的协助。 特别是在蓬勃发展的跨境电商领域,像亚马逊、速卖通、eBay等平台,结合社交电商营销和短视频内容成为最有效的流量来源。…

Redis篇之缓存雪崩

一、什么的缓存雪崩 缓存雪崩:在同一时间段大量的缓存key同时失效或者redis服务宕机,导致大量请求到达数据库给数据库带来巨大压力,可能导致数据库崩了。 二、应该怎么解决 1.给不同的Key的TTL添加随机值 2.利用Redis集群提高服务的可用性 3…

Java串口通信技术探究2:RXTX库单例测试及应用

目录 一、创建串口工具类二、串口工具测试三、运行时会遇到的错误JVM崩溃无法找到指定的类 本文主要介绍了Java串口通信技术探究,重点分析了RXTX库单例测试以及串口工具的使用。通过实例演示了如何使用SerialPortTool类进行串口操作,包括打开串口、关闭串…

websocket简易基操

一、概述 1.1 简介 WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议),它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的,Websocket是一个持久化的协议。…

阿里云ECS服务器Linux安装Mysql8

链接:https://pan.baidu.com/s/1s9j7OhiOMV9e9Qq9GDbysA 提取码:dd5a --来自百度网盘超级会员V5的分享 Mysql官网:MySQL 关于Mysql Yum Repository介绍可以看下 更加简单 关于X86和ARM 传到服务器 进入所在包 cd /usr/local/develop/mysql8 解压 …

QGIS导出文字到dxf格式

好久没发布文章了。 为了将qgis中的标注导出dxf中,颇费了一番功夫。因为要将mapus中标注的文字,导入qgis,再倒回dxf后在cad中打开。 下面是试验。 ACAD中把文件另存为dxf文件,然后拖入qgis,左侧会将图形和文字分成2…

代码随想录算法训练营第42天 | 01背包理论基础 416.分割等和子集

01背包理论基础 问题定义:有n件物品和一个能装重量为w的背包,第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包获得的总价值最大。dp数组含义:dp[i][j] 表示从下标为 [0…

功能强大的国外商业PHP在线教育系统LMS源码,直播课程系统

源码介绍 Proacademy是在线教育一体化的解决方案,用于创建类似于Udemy、Skillshare、Coursera这种在线教育市场。 这个平台提供在线课程,现场课程,测验等等,并有一个基于实际业务需要的高级认证插件,程序基于Laravel…

编码技巧——在项目中使用Alibaba Cloud Toolkit远程部署

背景 在新公司项目开发,当前项目为自建项目,意思是从开发到运维都需要自己负责,远程的服务器也是自己搭建的win操作系统; 之前在大厂工作时,一般提交代码之后,CICD流水线会自动的执行最新代码的拉取、构建打…

《计算机网络简易速速上手小册》第7章:云计算与网络服务(2024 最新版)

文章目录 7.1 云服务模型(IaaS, PaaS, SaaS)- 你的技术魔法盒7.1.1 基础知识7.1.2 重点案例:构建和部署 Python Web 应用实现步骤具体操作步骤1:创建 Flask Web 应用步骤2:准备应用部署 7.1.3 拓展案例1:使…