【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的寿命和安全性造成…

装饰者设计模式总结

现有问题: 如何动态的增加功能,即对原有功能进行增强。 方案1: 利用Java的继承方式来实现,但若继承层次过深或者增加功能过多,会导致继承爆炸,扩展性低,后续也很难维护,本质上属于继…

感觉 sheet.setDefaultColumnStyle 存在 bug

场景是已经有模板,有表头,获取模板后还需要动态增加一些表头,在使用 org.apache.poi 的包导出 excel 的时候,我用了 sheet.setDefaultColumnStyle 来设置动态表头整列的格式为文本,这个也是参考了网上的很多办法&#…

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

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

解释性与非解释性

解释性与非解释性是两种不同的方法或观点,广泛应用于科学研究、数据分析、哲学、法律等领域中。它们在处理信息、提供理解和推导结论方面有着根本的区别。 解释性(Interpretative) 解释性方法侧重于理解和解释现象背后的含义、原因和背景。这…

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

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

JVM体系

JVM是一种虚拟的计算机,它模拟了一个完整的硬件系统,并运行在一个完全隔离的环境中。这意味着JVM可以看作是一个在操作系统之上的计算机系统,与VMware、Virtual Box等虚拟机类似。JVM的设计目标是提供一个安全、可靠、高效且跨平台的运行环境…

vue安装依赖--save-dev和--save的区别是啥

就是使用这2种方法后就发现哪种都可以 dependencies:运行时的依赖,发布后,即生产环境下还需要用的模块 devDependencies:开发时的依赖。里面的模块是开发时用的,发布时用不到它。 作为一名后端开发人员,我…

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…

构建你的Python知识体系:一份详尽的Python知识图谱指南

序言:知识地图的重要性 当我们谈论Python知识图谱时,脑海中浮现的是一幅层次分明、结构清晰的知识网络,它将Python语言的各个核心概念、技术栈以及应用场景有机地连接起来,形成一个完整的知识生态系统。掌握这份图谱不仅有助于新…

gitee_pingo集成图床

利用Gitee搭建免费图床(详细教程)_gitee搭建图床-CSDN博客

Elasticsearch基于分区的索引策略

分区索引,或者更常见的说法,基于分区的索引策略,是一种按照特定规则(如时间、地理位置、业务线等)将数据分散到多个不同的索引中的方法。这种做法可以提高Elasticsearch的性能和可管理性,尤其是在处理大量数…

不到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领域也实现了非常显著…

NOR FLASH与NAND FLASH的详细区别

Flash 是常见的用于存储数据的半导体器件,它具有容量大、可重复擦写、按“扇区/块”擦除、掉电后数据可继续保存的特性。常见的Flash 主要有NOR Flash 和Nand Flash 两种类型,它们的特性如表 37.1.2.1.1 所示。NOR 和 NAND 是两种数字门电路,…

信钰证券: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…