js 中的非空断言操作符 (!.)叹号加点

news2024/10/6 14:35:02

js 中的非空断言操作符 (!.)叹号加点

在 TypeScript 或 JavaScript 中,!.并不是一个官方的语法结构。然而,!符号在 TypeScript 中确实有特定的用法,它被称为非空断言操作符。

!通常用作逻辑非操作符,用于将其后的布尔值取反。但是!.并没有定义为 JavaScript 的标准语法。如果您在某些特定环境或工具中看到了使用!.的代码,那可能是某种特定的代码风格或者扩展工具的功能,但并非 JavaScript 或 TypeScript 的标准特性。

(!.)常见用法

  • 示例 1
let input: HTMLInputElement | null = document.querySelector("input");
// 使用非空断言,告诉编译器input不为null
let inputValue: string = input!.value;

这里 input!表达了我们确信 input 不为 null,因此可以安全地访问.value 属性。如果不使用!,在 TypeScript 的严格模式下将会引发编译错误,因为 input 可能为 null。

  • 示例 2
function isString(s?: string) {
  return !!s;
}

function formatStr(str?: string): string {
  if (isString(str)) {
    return str!.toLowerCase();
  }
  return "";
}

str 经过函数校验后不可能是 undefined,我们可通过非空断言告知 TS。如下图:

在这里插入图片描述
在这里插入图片描述

  • 示例 3
function handler(arg: string | null | undefined) {
  let str: string = arg!; // 告诉编译工具,我这里没毛病
  str.substring(0, 2);
  // ...
}

!.用于告诉编译器,程序员确信某个表达式的结果一定不为 null 或 undefined,从而避免编译器的空值检查。

有疑问的同学可以私信我、对帮助到同学欢迎大家收藏评论。

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

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

相关文章

cuda和cudnn的安装(ubuntu22.04环境)

一、安装准备 安装依赖 sudo apt-get update sudo apt-get install g sudo apt-get install gcc sudo apt-get install make禁用默认驱动 sudo gedit /etc/modprobe.d/blacklist.conf 在末尾加上 blacklist nouveau options nouveau modeset0更新一下initramfs -u的镜像 s…

自动驾驶横向控制算法

本文内容来源是B站——忠厚老实的老王,侵删。 三个坐标系和一些有关的物理量 使用 frenet坐标系可以实现将车辆纵向控制和横向控制解耦,将其分开控制。使用右手系来进行学习。 一些有关物理量的基本概念: 运动学方程 建立微分方程 主要是弄…

【跟我学RISC-V】认识RISC-V指令集并搭建实验环境

写在前面 现在计算机的体系架构正是发展得如火如荼的时候,占领桌面端市场的x86架构、占领移动端市场的arm架构、在服务器市场仍有一定地位的mips架构、国产自研的指令集loongarch架构、还有我现在要讲到的新型开源开放的RISC-V指令集架构。 我先说一说我的学习经历…

第9章 知识产权

一、著作权 (一)版权 版权,亦称“著作权”,符号:©。指作者或其他人(包括法人)依法对某一著作物享受的权利。 1、人身权 包括发表权、署名权、修改权、限制。发表权为著作人终身及其死后…

编程代码查重 比赛防作弊 图形界面代码查重工具SIM 支持c++ python java c语言下载

SIM,全称The software and text similarity tester SIM,是Dick grune开发的一款代码查重软件。比较轻量级,也被一些OJ集成用来查重(如hustoj)。但由于软件本身是命令行软件(就是小黑框框的那种)…

IDEA 中的奇技淫巧

IDEA 中的奇技淫巧 书签 在使用ctrlalt方向键跳转时,或者追踪代码时,经常遇到的情况是层级太多,找不到代码的初始位置,入口。可以通过书签的形式去打上一个标记,后续可以直接跳转到书签位置。 标记书签:c…

DevTools failed to load SourceMap: Could not load content for http://127.0.0

运行时报错: DevTools failed to load SourceMap: Could not load content for http://127.0.0.1:64311/.sourcemap/mp-weixin/pages/***/***.js.map: HTTP error: status code 403, net::ERR_HTTP_RESPONSE_CODE_FAILUREDevTools failed to load SourceMap: Could …

CommonJS-模块与ES模块简单了解与区别

文章目录 CommonJS 模块与ES模块简单了解与区别一、简介二、区别1.语法差异2.实现差异 三、其他 CommonJS 模块与ES模块简单了解与区别 今天在用vite构建项目时,用了module.exports写法一直报错,后面了解是因为commonJS模块(以下简称CJS)与E…

改进了洗搞提示词后,Kimi的效果竟秒杀GPT4.0!

大家好,我是五竹。 在《玩转GPT指南》中的AI爆文写作专项中提过,新人使用AI创作爆文最快的流程就是:找对标文章->使用AI对对标文章进行仿写/改写/原创。 其中改写最简单但缺点也很明显,就是和原文的重复率过高,我…

前端可以掌握的nginx相关操作

一、前言: 在日常开发中,前端工程师可以把打好的前端包直接放到测试服务器上,自己再验证功能是否改好,这样可以提高开发效率,写篇笔记记录一下我个人用到的命令 二、使用的工具 用MobaXterm完成相关操作&#xff0c…

java语言开发的商城系统有哪些?

最近,有小伙伴问我有没有靠谱的java商城系统,经过我一顿扒拉,终于给大家整理出来了。 目前java语言开发的商城系统主要有shop、javashop、ejavashop、yuanfeng、mall4j、lilishop等。在没有深入了解这些系统前,我们可以从产品推出…

两种类型的二叉搜索树

文章目录 1.搜索二叉树的概念2.搜索二叉树的模拟实现2.1 搜索二叉树的结构2.2 插入2.3 查找2.4 删除2.5 中序遍历2.6 完整代码 3.二叉搜索树的两种模型3.1 两种模型3.2 key_value模型搜索二叉树 4.两种二叉树的测试 1.搜索二叉树的概念 二叉搜索树又称二叉排序树,它…

【Canvas与艺术】 绘制五星红旗

【注意】 该图中五星定位和大小都是按 https://www.douyin.com/note/7149362345016380710 精确绘制的。 【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8&q…

[iOS]组件化开发

一、组件化开发基础 1.组件定义 在软件开发中&#xff0c;一个组件是指一个独立的、可替换的软件单元&#xff0c;它封装了一组相关的功能。组件通过定义的接口与外界交互&#xff0c;并且这些接口隔离了组件内部的实现细节。在Swift语言中&#xff0c;组件可以是一个模块、一…

Qt使用OPCUA

假如想在Qt下使用OPCUA通讯&#xff0c;貌似大家都是倾向于使用【qtopcua】这个库。但是在Qt6之前&#xff0c;假如想使用这个库&#xff0c;还得自己编译&#xff0c;比较繁琐。假如想开箱即用&#xff0c;而且没有使用太复杂的功能的话&#xff0c;其实可以直接使用open62541…

项目:使用LNMP搭建私有云存储

目录 项目&#xff1a;使用LNMP搭建私有云存储 准备工作 回复快照&#xff0c;关闭安全软件 上传软件 设置nextcloud安装命令权限 设置数据库 重启数据库 配置nginx 安装 内网穿透 cpolar的域名信任 项目&#xff1a;使用LNMP搭建私有云存储 准备工作 回复快照&a…

Word插件开发

VSTO是Visual Studio Tools for Office的简称&#xff0c;它是Microsoft Visual Studio的一个扩展&#xff0c;用于开发基于Microsoft Office平台的应用程序。VSTO提供了一套API和工具&#xff0c;使开发人员能够利用Visual Studio IDE来开发定制的Office解决方案。 在 Visual…

MySQL中的数据类型及一些应用场景

1.6. 数据类型 MySQL的数据分为以下几个大类&#xff1a; 1. String Types 字符串类型 2. Numeric Types 数字类型 3. Date and Time Types 日期和时间类型 4. Blog Types 存放二进制的数据类型 5. Spatial Types 存放地理数据的类型 1.6.1. 字符串类型 最常用的两个字符串类…

Odoo:世界排名第一的免费开源设备资产(EAM)管理系统介绍

本文节选自Odoo亚太金牌服务机构【开源智造】所编写的《Odoo行业应用解决方案白皮书》如需获取完整的知识内容&#xff0c;请至开源智造官网免费获取。感谢网友一键三连&#xff1a;点赞、转发、收藏&#xff0c;您的支持是我们最大的前进动力&#xff01; 概述 实施全面的维护…

免费语音转文字:自建Whisper,贝锐花生壳3步远程访问

Whisper是OpenAI开发的自动语音识别系统&#xff08;语音转文字&#xff09;。 OpenAI称其英文语音辨识能力已达到人类水准&#xff0c;且支持其它98中语言的自动语音辨识&#xff0c;Whisper神经网络模型被训练来运行语音辨识与翻译任务。 此外&#xff0c;与其他需要联网运行…