【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.mzph.cn/news/673930.shtml

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

相关文章

MacBook有必要装清理软件吗?CleanMyMac的一些主要特点

MacBook是苹果公司的一款高端笔记本电脑,但是,随着使用时间的增长,MacBook也会出现一些问题,比如运行缓慢、卡顿、垃圾文件堆积、磁盘空间不足等。这些问题不仅影响了用户的使用体验,也可能对MacBook的寿命和安全性造成…

如何将国风与品牌信息相结合?

随着人们消费观念的转型升级。「国风」成为深受品牌欢迎的营销元素,它能够通过东方美学引起用户。然而有许多品牌在国风营销中稍不注意就会踩雷,今天媒介盒子就来和大家聊聊:国风营销怎么做才能吸引用户。 一、 与用户生活结合 要找到传统文…

ChatGPT高效提问—prompt常见用法(续篇四)

ChatGPT高效提问—prompt常见用法(续篇四) 1.1 知识生成 ​ 知识生成是指使用自然语言处理技术,通过ChatGPT等AI模型生成与特定主题相关的知识、文本或回答。在知识生成过程中,模型接收prompt输入的问题、指令或上下文信息&…

Vue3中路由配置Catch all routes (“*“) must .....问题

Vue3中路由配置Catch all routes (“*”) must …问题 文章目录 Vue3中路由配置Catch all routes ("*") must .....问题1. 业务场景描述1. 加载并添加异步路由场景2. vue2中加载并添加异步路由(OK)3. 转vue3后不好使(Error)1. 代码2. 错误 2. 处理方式1. 修改前2. 修…

8_姿态的其他描述及一般坐标系映射

1.机器人姿态的其他表示方法 前面说的用33矩阵矩阵描述姿态,9个元素,6个约束条件,实际上只有3个独立元素。即用3个独立元素即可描述机器人姿态。常用的有RPY角,欧拉角和四元数。 1.1 RPY角 RPY角是船舶在海上航行时常用的一种姿态…

基于java+springboot+vue实现的高校物品捐赠管理系统(文末源码+Lw)23-151

第1章 绪论 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔记本的广泛运用,以及各种计算机硬件的完善和升级&#xf…

不到1s生成mesh! 高效文生3D框架AToM

论文题目: AToM: Amortized Text-to-Mesh using 2D Diffusion 论文链接: https://arxiv.org/abs/2402.00867 项目主页: AToM: Amortized Text-to-Mesh using 2D Diffusion 随着AIGC的爆火,生成式人工智能在3D领域也实现了非常显著…

信钰证券:2024年最新创业板开通条件?

创业板是深圳证券买卖所建立的一个专门为创新型、成长型企业服务的板块,受到了不少投资者的关注。对于2024年最新创业板注册条件,信钰证券下面就为我们详细介绍一下。 2024年最新创业板注册条件: 1、投资者的财物要求:投资者申请…

JavaScript基础(28)_获取元素的其他样式

其他样式操作的属性 clientWidth(只读):获取元素的"可见宽度",包括内容区和内边距(返回的是一个数字,不带px,可直接进行计算)。 clientHeight(只读):获取元素的"可见高度",包括内容区…

大数据应用对企业的价值

目录 一、大数据应用价值 1.1 大数据技术分析 1.2 原有技术场景的优化 1.2.1 数据分析优化 1.2.2 高并发数据处理 1.3 通过大数据构建新需求 1.3.1 智能推荐 1.3.2 广告系统 1.3.3 产品/流程优化 1.3.4 异常检测 1.3.5 智能管理 1.3.6 人工智能和机器学习 二、大数…

mac电脑安装cocoapods出错,以及安装最新版本ruby方法

macbook安装cocoapods时碰到一个报错:大概率是ruby的版本太低导致的 sudo gem install cocoapods ERROR: Error installing cocoapods: ERROR: Failed to build gem native extension. ... Could not create Makefile due to some reason, probably lack of neces…

Mountain Lake - Forest Pack

从头开始构建的50个岩石森林资源集合,充分利用了HDRP。还支持Universal 和Built-In。 支持Unity 2020.3+、高清渲染管线、通用渲染管线、标准渲染管线。导入包后,按照README中的说明进行操作。 Mountain Lake - Rock & Tree Pack是一个由50个准备好的资源组成的集合,从头…

如何运行心理学知识(心流)来指导工作和生活

如何运用心流来指导工作和生活 如何联系我 作者:鲁伟林 邮箱:thinking_fioa163.com或vlinyes163.com GitHub:https://github.com/thinkingfioa/ReadingSummary 版权声明:文章和记录为个人所有,如果转载或个人学习…

命令行参数、环境变量

1. 命令行参数 大家平时在写主函数时基本是无参的,但其实是有参数的,先介绍前两个参数。 int main(int argc, char* argv[])第二个参数是指针数组,第一个参数是该数组的个数,我们先来写 一段代码来看看指针数组里面是什么。 1 #…

Vue3父子组件传参

一,父子组件传参: 应用场景:父子组件传参 Vue3碎片:defineEmits,defineProps,ref,reactive,onMounted 1.父组件传子组件 a.父组件传参子组件 import { ref} from vue import OnChi…

【力扣】快乐数,哈希集合+快慢指针+数学

快乐数原题地址 方法一:哈希集合 定义函数getNext(n),返回n的所有位的平方和。一直执行ngetNext(n),最终只有2种可能: n停留在1。无限循环且不为1。 证明:情况1是存在的,如力扣的示例一: 接…

微信自动预约小程序开发指南:从小白到专家

随着互联网的发展,小程序已经成为了一个备受欢迎的在线预约平台。本文将详细介绍如何使用第三方制作平台,如乔拓云网,来搭建一个从入门到精通的预约小程序。 首先,我们需要登录乔拓云网,并选择一个适合自己的小程序模板…

汽车控制臂的拓扑优化

前言 本示例使用优化模块通过减小控制臂的体积同时最大化其刚度来优化汽车控制臂的设计。 本页讨论 前言应用描述Abaqus建模方法和仿真技术文件参考 应用描述 本例说明了汽车控制臂的拓扑优化,在拓扑优化过程中,修改设计区域中单元的材料特性(有效地从…

双非本科准备秋招(20.1)—— 并发编程之生产者消费者

生产者消费者 与保护性暂停中的不同,不需要产生结果和消费结果的线程一一对应。 生产者仅负责产生结果数据,不关心数据该如何处理,而消费者专心处理结果数据 JDK 中各种阻塞队列,采用的就是这种模式 代码实现: 首先…

【开源】基于JAVA+Vue+SpringBoot的新能源电池回收系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户档案模块2.2 电池品类模块2.3 回收机构模块2.4 电池订单模块2.5 客服咨询模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 E-R 图设计 四、系统展示五、核心代码5.1 增改电池类型5.2 查询电池品类5.3 查询电池回…