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

TypeScript中常见的操作符运算符总结


一、非空断言操作符(!)

当我们⽆法断定类型时,可以使用后缀表达式操作符 来断⾔操作对象是⾮ null 或⾮ undefined 类型。

具体来说,比如表达式: x ! , 结果将从 x 值域中排除 null 和 undefined。


(1)、赋值时忽略 null 和 undefined

function test(name: string | undefined | null) {// Type 'string | null | undefined' is not assignable to type 'string'.// Type 'undefined' is not assignable to type 'string'. const onlyStringName: string = name;   // errorconst ignoreUndefinedAndNullName: string = name!; // Ok
}

(2)、函数调用时忽略 null 和 undefined

type CallBackString = () => string;
function test(call: CallBackString |null| undefined) {// Object is possibly 'undefined'.// Cannot invoke an object which is possibly 'undefined'.const onlyStringName = call(); // Errorconst ignoreUndefinedAndNullName = call!(); //OK
}

二、可选链操作符(?.)

?. 操作符功能和 . 链式操作符相似,区别在于,在引用为空 (null 或者 undefined) 的情况下不会引起错误,如果给定值不存在,则直接返回 undefined


例如:

const obj = {project: {dir: {file: "name",},},
};const file = obj?.project?.dir?.file; // name
const test = obj?.other?.dir; // undefined

三、空值合并运算符(??)与 逻辑或运算符( || )

当左侧操作数为nullundefined ,返回右侧的操作数,否则返回左侧的操作数。

空值合并运算符与逻辑或 || 运算符不同,逻辑或会在左操作数为false 值时返回右侧操作数。


例如:

const file = null ?? 'dir'; // dir
const num = 0 ?? 20;        // 0
const num1 = 0 || 20;			  // 20

四、可选属性运算符(?:)

使⽤ interface 关键字可以声明⼀个接⼝:

interface Student {name: string;age: number;gender:number;
}

此时定义接口,若是缺少参数将会报错:

let student: Student = {name: "name1"age:12
}; //Error 

此时使用可选属性,再定义就OK:

interface Student {name: string;age: number;gender?:number;
}let student: Student = {name: "name1"age:12
}; //ok 

五、运算符(&)

通过 & 运算符可以将多种类型叠加到⼀起合并为⼀个类型。

如下:

type Pointx = { x: number; };
type Ponity = { y: number; };type Point = Pointx & Ponity;
let  point: Point = { x: 1,  y: 1 }

六、运算符(|)

TypeScript 中,联合类型表示取值可以为多种类型中的⼀种,联合类型通常与 null 或 undefined ⼀起使⽤。

运算符(|)常用在声明联合类型时,分隔每个类型。

const fun = (info:string | null | undefined) => {}

七、数字分隔符(_)

可以通过下划线作为分隔符来分组数字。

const number1 = 1234_5678
// 等价
const number2 = 12345678;

相关文章:

TypeScript中常见的操作符运算符总结

一、非空断言操作符(!) 当我们⽆法断定类型时,可以使用后缀表达式操作符 ! 来断⾔操作对象是⾮ null 或⾮ undefined 类型。 具体来说,比如表达式: x ! , 结果将从 x 值域中排除 null 和 unde…...

什么是泛型约束?

泛型约束(Generic Constraints)是一种在使用泛型时限制可接受类型的方式。它允许我们对泛型类型参数进行限定,以确保只有符合特定条件的类型才能被使用。 泛型约束的作用是提供更精确的类型控制和更强的类型安全性。通过约束泛型类型参数&am…...

代码随想录算法训练营 动态规划part11

一、买卖股票的最佳时机III 123. 买卖股票的最佳时机 III - 力扣(LeetCode) 请选一个喜欢的吧/(ㄒoㄒ)/~~123. 买卖股票的最佳时机 III - 力扣(LeetCode) class Solution {public int maxProfit(int[] prices) {if(pricesnul…...

新概念英语(第二册)复习——Lesson 16 - Lesson20

前言 新概念英语的16-20课,从21课开始,每天一课的速度更新,方便你能快速跟上。 文章目录 前言Lesson 16 - A polite request原文译文单词 Lesson 17 - Always Young原文译文单词 Lesson 18 - He often does this!原文译文单词Lesson 19 - So…...

[题] n-皇后问题 #深搜 #DFS

题目 AcWing 843. n-皇后问题 代码 #include<bits/stdc.h> using namespace std; const int N 20; int n, p[N]; char g[N][N]; bool col[N], dg[N], udg[N]; void D (int u){if(u n){for(int j 0; j < n; j )puts(g[j]);cout << endl;return ;}for(int i…...

十小时开源了一个加密算法仓库,功能强大,后端开发人员狂喜!

写在前面 昨晚上睡觉前我就在想能不能把多个加密算法集成到一个库中&#xff0c;方便开发者调用&#xff0c;说干就干&#xff0c;今天肝了一天&#xff0c;中午直接吃的外卖哈哈哈哈&#xff0c;终于把仓库开源了&#xff0c;欢迎各位Go开发者Star和Fork! 仓库地址 go-cryp…...

标准化套利的使用

交易对象&#xff1a;目前使用郑商所&#xff0c;大商所的spd标准化套利组合进行交易。 交易平台&#xff1a;易盛极星极星产品网 手续费研究:白糖期货手续费和保证金2023年09月更新 - 九期网 本人使用的期货交易公司&#xff1a;中信期货&#xff08;幸亏资金量大&#xff…...

【MySQL数据库事务操作、主从复制及Redis数据库读写分离、主从同步的实现机制】

文章目录 MySQL数据库事务操作、主从复制及Redis数据库读写分离、主从同步的实现机制ACID及如何实现事务隔离级别&#xff1a;MVCC 多版本并发控制MySQL数据库主从复制主从同步延迟怎么处理Redis 读写分离1.什么是主从复制2.读写分离的优点 Redis为什么快呢&#xff1f; MySQL数…...

十五、红外遥控器

十五、红外遥控器 介绍基本接收和发送遥控器键码外部中断和外部中断寄存器 红外解码中断函数红外遥控电机模块电机调速 介绍 基本接收和发送 空闲状态&#xff1a;红外LED不亮&#xff0c;接收头输出高电平发送低电平&#xff1a;红外LED以38KHz闪烁&#xff0c;接收头输出低…...

diot函数解析

文章目录 前言一、Rio_readinitb二、Rio_readlineb三、strstr四、strcat五、Open_clientfd六、Rio_writen总结 前言 备战CSAPP中的ProxyLab时解析书上的diot函数中遇到了一些不会的函数&#xff0c;遂解析记录。 一、Rio_readinitb 读和解析请求行 Rio_readinitb(&rio,…...

Python函数绘图与高等代数互融实例(一):正弦函数与余弦函数

Python函数绘图与高等代数互融实例(一):正弦函数与余弦函数 Python函数绘图与高等代数互融实例(二):闪点函数 Python函数绘图与高等代数互融实例(三):设置X|Y轴|网格线 Python函数绘图与高等代数互融实例(四):设置X|Y轴参考线|参考区域 Python函数绘图与高等代数互融实例(五…...

Python 判断回文数

"""判断输入的数是否为回文数介绍&#xff1a;回文数&#xff1a;数字从高位到低位正序排列和低位到高位逆序排列都是同一数值例如&#xff1a;数字 1221 无论正序还是逆序都是 1221知识点&#xff1a;1、获取字符串长度函数len()2、条件语句if/elif/else3、循环…...

人工智能在金融领域的五个应用案例

随着科技的进步&#xff0c;人工智能(Artificial Intelligence&#xff0c;AI)正逐渐渗透到各个行业中&#xff0c;其中包括金融领域。本文介绍人工智能在金融领域的五个应用案例&#xff0c;以期帮助大家更好地了解这个新兴技术在金融中的价值和作用。 文章目录 Part1 风险管理…...

java 工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…...

Effective C++看书笔记(2):构造/析构/赋值运算

构造/析构/赋值运算 5&#xff1a;了解C默默编写并调用哪些函数6&#xff1a;如果不想使用编译器自动生成的函数&#xff0c;就该明确拒绝7&#xff1a;为多态基类声明virtual析构函数8&#xff1a;别让异常逃离析构函数9&#xff1a;绝不在构造和析构过程中调用virtual函数10&…...

交换奇偶位:交换一个整数的二进制的奇偶位置(仅考虑正数情况)

方法二&#xff1a; 设计思想&#xff1a; 0xAAAAAAAA 的二进制表示为 10101010...&#xff08;从最低位开始&#xff09; 0x55555555 的二进制表示为 01010101...&#xff08;从最低位开始&#xff09; 问题&#xff1a;更加想不到掩码&#xff01;&#xff01;&#xf…...

Unity中的两种ScriptingBackend

一&#xff1a;前言 二&#xff1a;两种模式的介绍 ios&#xff1a;unity只有il2cpp模式的编译才支持64位系统&#xff0c;mono是不支持的&#xff0c;在快速开发阶段仍然支持Mono&#xff0c;但是不能再向Apple提交Mono(32位)的应用 苹果在2016年1月就要求所有新上架游戏必须支…...

vue3硅谷甄选01 | 使用vite创建vue3项目及项目的配置 环境准备 ESLint配置 prettier配置 husky配置 项目集成

文章目录 使用vite创建vue3项目及项目的配置1.环境准备2.项目配置ESLint校验代码工具配置 - js代码检测工具1.安装ESLint到开发环境 devDependencies2.生成配置文件:.eslint.cjs**3.安装vue3环境代码校验插件**4. 修改.eslintrc.cjs配置文件5.生成ESLint忽略文件6.在package.js…...

蓝牙核心规范(V5.4)10.5-BLE 入门笔记之HCI

HCI全称:HOST Constroller Interface 主机控制器接口(HCI)定义了一个标准化的接口,通过该接口,主机可以向控制器发出命令,并且控制器可以与主机进行通信。规范被分成几个部分,第一部分仅从功能的角度定义接口,不考虑具体的实现机制,而其他部分定义了在使用四种可能的…...

【计算机毕业设计】基于SpringBoot+Vue记帐理财系统的设计与实现

博主主页&#xff1a;一季春秋博主简介&#xff1a;专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发&#xff0c;远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容&#xff1a;毕业设计(Java项目、小程序、安卓等)、简历模板、学习资料、…...

2023年中国研究生数学建模竞赛E题

出血性脑卒中临床智能诊疗建模 一、背景介绍 出血性脑卒中指非外伤性脑实质内血管破裂引起的脑出血&#xff0c;占全部脑卒中发病率的10-15%。其病因复杂&#xff0c;通常因脑动脉瘤破裂、脑动脉异常等因素&#xff0c;导致血液从破裂的血管涌入脑组织&#xff0c;从而造成脑部…...

基于springboot+vue的大学生科创项目在线管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...

什么是文档签名证书?PDF文档怎么签名?

什么是文档签名证书&#xff1f;在“互联网”时代&#xff0c;电子合同、电子证照、电子病历、电子保单等各类电子文档无纸化应用成为常态。如何让电子文档的签署、审批具有公信力及法律效力&#xff0c;防止伪造签名、假冒签名等问题出现&#xff0c;是电子文档无纸化应用的主…...

2023年汉字小达人区级比赛倒计时2天,最新问题解答和真题练一练

今天是9月23日&#xff0c;距离2023年第十届汉字小达人区级比赛&#xff08;初赛&#xff09;的自由报名参赛时间还有2天&#xff0c;六分成长结合家长和小朋友们问的比较多的问题进行解答&#xff0c;并提供一些真题供大家练习、了解比赛题型和规则。 问题1&#xff1a;2023年…...

关于地址存放的例题

unsigned int a 0x1234; unsigned char b *(unsigned char*)&a; 上面代码大端存储和小端存储的值分别是多少&#xff1f; 大端存储的是把高位地址存放在低位地址处&#xff0c;低位存放到高位。小端是高位存放在高位&#xff0c;低位在低位。因为a是整型&#xff0c;所…...

Flume最简单使用

文章目录 一、简介1、定义2、基础架构 二、快速入门1、解压Flume2、案例一&#xff1a;监控端口号3、案例二&#xff1a;将空目录下文件 三、Flume进阶1、Flume事务2、Flume Agent内部原理3、案例一&#xff1a;监控日志4、案例二&#xff1a;多路复用和拦截器适应4.1 原理4.2 …...

第2章 Java集合

2.1 谈谈你对Java集合的理解 难度:★★★ 重点:★★★★ 白话解析 集合类的概念还是比较重要的,不仅面试经常问,实际开发中也离不开。如果能把这道题真正理解了,集合可以说基本上没问题了。 集合就用来用存数据的,它提供了对数据增删改查和统计大小等方法。在Java中集合…...

YOLOv5、YOLOv8改进:C3STR(Swin Transformer)

目录 1.介绍 2. YOLOv5、YOLOv8改进 2.1 common.py配置 2.2 yolo.py配置 2.3 yaml配置文件 1.介绍 视觉领域正在见证从 CNN 到 Transformers 的建模转变&#xff0c;纯 Transformer 架构在主要视频识别基准测试中达到了最高准确度。这些视频模型都建立在 Transformer 层之…...

AIGC百模大战

AIGC Artificial Intelligence Generated Content&#xff0c; 或者Generative Artificial Intelligence&#xff0c;它能够生成新的数据、图像、语音、视频、音乐等内容&#xff0c;从而扩展人工智能系统的应用范围。 生成式人工智能有可能给全球经济带来彻底的变化。根据高盛…...

docker jira 一键安装含PJ(docker 一键安装jira)

docker jira 一键安装含PJ&#xff08;docker 一键安装jira&#xff09; 本文仅供参考学习&#xff0c;请勿用于商业用途本文用于Jira在Docker的安装&#xff0c;仅用于记录安装方式转载请注明来源Linux安装可参考链接Windows安装可查考链接Docker一键安装Confluence PJ条件允…...

如何把地图放到自己做的网站上/百度推广登录地址

转载于:https://www.cnblogs.com/lianghong881018/p/10761990.html...

四川南充房产网/宁波百度seo点击软件

Insatll (安装)//> 使用composer直接安装composer require graham-campbell/markdown//> 或在composer.json文件require中添加如下&#xff1a;"require": {"graham-campbell/markdown": "^7.0"}//> 使用下面命令更新composer.json依赖…...

做映射后 内网无法通过域名访问网站/seo的形式有哪些

题意&#xff1a;学生和课程构成二部图&#xff0c;然后需要找到一个集合每个学生代表一门课&#xff0c;每一门课有一个学生代表。 思路&#xff1a;二分图入门题。当最大匹配等于课程数的时候可以找到集合。 代码如下&#xff1a; 1 /**************************************…...

网站不稳定/seo搜索引擎优化是什么意思

01 最长上升子序列 给定一个无序的整数数组&#xff0c;找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101]&#xff0c;它的长度是 4。说明: 可能会有多种最长上升子序列的组合&#xff0c;你只需要输出对…...

重庆市官方网站/惠州seo代理计费

假设您的DataFrame具有类似于以下内容的架构(即Assets和Revenue是数字)&#xff1a; df.printSchema() #root # |-- ID: long (nullable true) # |-- Assets: integer (nullable true) # |-- Revenue: integer (nullable true) 您可以在已设置的条件下将DataFrame自身设置为…...

电商网站制作/百度指数大数据

没有顺序关系&#xff0c;可前可后。...