非空断言,

先看下TypeScript基础之非空断言操作符、可选链运算符、空值合并运算符-CSDN博客

我没有复现出来,但是我知道了它的作用

用  let str: string = arg!;

代替

let str: string;

if (arg) { str = arg; }

非空断言(!)和不使用的区别在于对于可能为 nullundefined 的值的处理方式。非空断言告诉 TypeScript 编译器在某个特定上下文中,你确定一个值不会为 nullundefined

下面是一个示例代码,演示了使用非空断言和不使用的区别:

// 使用非空断言
function withNonNullAssertion(input: string | null): void {let length: number = input!.length; // 使用非空断言console.log(length);
}// 不使用非空断言
function withoutNonNullAssertion(input: string | null): void {if (input !== null) {let length: number = input.length; // 不使用非空断言,通过条件检查console.log(length);} else {console.log('Input is null');}
}// 示例调用
let myString: string | null = 'Hello, TypeScript!';
withNonNullAssertion(myString); // 使用非空断言
withoutNonNullAssertion(myString); // 不使用非空断言

withNonNullAssertion 函数中,我们使用非空断言直接获取 input 的长度,因为我们在这个上下文中确切地知道 input 不会为 null。这样做可以简化代码,但要确保你在使用非空断言时了解上下文,并且确定该值确实不会为 nullundefined

withoutNonNullAssertion 函数中,我们通过条件检查确保 input 不为 null,然后再使用它的属性。这是一种更安全的方式,适用于在某些情况下你不能确定值是否为 nullundefined 的情况。

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

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

相关文章

【Linux】TCP套接字编程

目录 前言 UDP服务器的完善 线程的封装 结构定义 接口实现 环形队列 结构定义 接口实现 加锁 信号量的申请与释放 入队与出队 整体组装 初始化与析构 信息接收线程 消息发送线程 TCP套接字 创建套接字 listen accept 收发操作 客户端的编写 进一步完善 …

每日一题:LeetCode-1089. 复写零

每日一题系列(day 09) 前言: 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &#x1f50e…

浅学指针(4)函数指针数组和qsort的使用

系列文章目录 文章目录 系列文章目录前言1.函数指针数组的⽤途作用:可以让代码更简洁,逻辑更清晰 2. 回调函数回调函数就是⼀个通过函数指针调⽤的函数 3 . qsort函数qsort函数可以排序所有数据类型解释如图:![在这里插入图片描述](https://i…

Google Chrome 下载 (离线版)

1 访问网址 Google Chrome 网络浏览器 2 点击 下载Chrome 3 直接运行 ChromeStandaloneSetup64.exe 其他: ####################### 谷歌浏览器 (Google Chrome) 最新版离线安装包下载 https://www.iplaysoft.com/tools/chrome/#google_vignette Google Chrome …

socks5代理如何工作?socks5代理可以用来做什么?

socks5代理是一种网络代理服务器,它通常用于改变网络请求的传输方式和地址,从而使得网络请求能够通过代理服务器进行访问。本文将介绍socks5代理的工作原理、优势、使用场景以及如何选择合适的socks5代理。 一、socks5代理的工作原理 socks5代理是一种协…

golang strings包的基本操作

文章目录 golang 的字符串函数EqualFoldHasPrefixHasSuffixContainsContainsRuneContainsAnyCountIndexIndexByteIndexRuneIndexAnyIndexFuncLastIndexLastIndexAnyLastIndexFuncTitleToLowerToLowerSpecialToUpperToUpperSpecialToTitleToTitleSpecialRepeatReplaceMapTrimTri…

一文读懂设备巡检的主要内容

在现代企业和组织中,设备的正常运行是业务持续发展的关键,尤其是制造业,由于其发展趋势不断机械化、自动化、大型化、高速化和复杂化,对设备巡检的要求越来越高。然而,在信息化时代,很多企业目前仍采用纸笔…

GPT实战系列-大模型训练和预测,如何加速、降低显存

GPT实战系列-大模型训练和预测,如何加速、降低显存 不做特别处理,深度学习默认参数精度为浮点32位精度(FP32)。大模型参数庞大,10-1000B级别,如果不注意优化,既耗费大量的显卡资源,…

Python应用:利用matplotlib画学生成绩分布饼图

1. 题目 给定一组学生成绩:[85, 92, 78, 65, 95, 88, 72, 60, 98, 45, 100, 46, 23, 88, 67, 89, 67, 88, 99],现在评分等级为优(90-100)、良(70-89)、及格(60-69)、不及格&#xff…

玩转大数据4:大数据的崛起与应用领域探索

图片来源网络 引言 在当今数字化时代,大数据正以前所未有的速度和规模崛起。大数据的出现不仅改变了企业和组织的经营模式,也对我们的社会生活带来了深刻的影响。Java作为一种广泛使用的编程语言,在大数据领域发挥着重要的作用。本文将重点…

【android开发-02】android中OptionMenu用法介绍

Option Menu 是 Android 中一种常用的菜单方式,它通常用于在屏幕的顶部显示一个下拉菜单,提供一些常用的功能或操作选项。菜单里的菜单项默认不会显示出来,需要点击右上角三个点的菜单按钮。以下是一些使用 Option Menu 的基本步骤&#xff1…

树莓派,linux换清华源

清华源网址 https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/ 更换软件源 鉴于国内网络环境下载各大镜像,软件包速度慢的问题,需要更换软件源,以防下载慢,且在本教程中,统一更换为清华源。 2.3.1 更换树莓派软…

工程师每日刷题 -4

文章目录 1、深度学习2、算法与数据结构2.1、暴力解法2.2、滑动窗口法 3、编程基础 1、深度学习 问题:CNN的本质和优势? CNN 本质上是一个多层感知机 (MLP),其成功的原因关键在于它所采用的【稀疏连接】(局部感受)和…

【带头学C++】----- 九、类和对象 ---- 9.3 析构函数

9.3 析构函数 9.3.1 如何定义析构函数 函数名和类名称相同,在函数名前加 ~ ,没有返回值类型,没有函数形参。 (不能被重载) 当对象生命周期结束的时候,系统自动调用析构函数(析构函数会先清理对象占用内存空间存放的…

【openssl】Window系统如何编译openssl

本文主要记录如何编译出windows版本的openss的lib库 1.下载openssl,获得openssl-master.zip。 a.可以通过github(网址在下方)上下载最新的代码、今天是2023.12.1我用的master版本,下载之后恭喜大侠获得《openssl-master.zip》 …

测试-感受生产者消费者模型-阻塞队列

Testpublic void test() throws InterruptedException {// 创建一个阻塞队列// 编写1个生产者-3个消费者的模型BlockingQueue<String> queue new ArrayBlockingQueue<>(3);// 1个生产者new Thread(() -> {// 生产20个元素for (int i 0; i < 20; i) {try {/…

高效学习 React 框架AntDesign Pro

高效学习 用框架做项目。 第一步命令行运行下列命令&#xff0c;快速启动开发服务 $ npm i ant-design/pro-cli -g $ pro create my-app$ cd my-app $ npm i $ npm run start # 打开浏览器访问 http://localhost:8000 # 如果安装过程中出现报错&#xff0c;请更新包$ npm upd…

快递物流模拟系统

快递物流模拟系统 文章目录 快递物流模拟系统一、目的二、技术实现&#xff1a;三、网页功能具体介绍 一、目的 调用百度地图 JavaScript API 创建的简单的基站物流GPS定位与监控系统的示例网页 二、技术实现&#xff1a; 使用百度地图 JavaScript API 版本 2.0。利用 BMap …

Webpack——Webpack简介

1、什么是Webpack&#xff1f; Webpack是一个开源的JavaScript模块打包工具&#xff0c;其最核心的功能是解决模块之间的依赖&#xff0c;把各个模块按照特定的规则和顺序组织在一起&#xff0c;最终合并为一个JS文件&#xff08;有时会有多个&#xff0c;这里讨论的只是最基本…

SQL Sever 基础知识 - 数据排序

SQL Sever 基础知识 - 二 、数据排序 二 、对数据进行排序第1节 ORDER BY 子句简介第2节 ORDER BY 子句示例2.1 按一列升序对结果集进行排序2.2 按一列降序对结果集进行排序2.3 按多列对结果集排序2.4 按多列对结果集不同排序2.5 按不在选择列表中的列对结果集进行排序2.6 按表…