TS中符號的用法:?、??、 !、 !!

1) ? 的用法

示例:

?const obj = res?.data || {}; // obj是從接口中取到的數據const dataError = obj.a.b; ?// 若obj為空,則此時會報錯const dataSafe = obj?.a?.b; ?// 相當于 const dataSafe = obj && obj.a && obj.a.b ?? obj.a.b : undefined;

? 表示該參數是一個可選參數;
當使用某一個對象中的屬性時,若無法確定該對象是否會為空就需要在后面加上一個問號來進行判空處理,表示若不為空時再去訪問屬性。

2) ?? 的用法

示例:

const foo = str ?? ? 'default'; ?// ?若str 為 null 或 undefined, foo為default

只有當左側為null或者undefined時,才會返回右側的數;主要用于設置默認值

2.感嘆號的用法
1) ! 的用法— !obj
變量前使用表示取反;
可將變量轉為boolean類型: null、undefined、空字符串 取反之后都為true;

2) !! 的用法— !!obj
!! 用于類型判斷,在 ! 之后再做取反

const obj = {a: 1, ? ? ? ?? ??? ?// !obj['a'] 為false; ?? ?!!obj['a'] ?為true;b: '',?? ??? ??? ??? ?// !obj['b'] 為true;?? ?!!obj['b'] ?為false;c: 'test', ??? ??? ?// !obj['c'] 為false;?? ?!!obj['c'] ?為true;d: null,?? ??? ??? ?// !obj['d'] 為true;?? ?!!obj['d'] ?為false;e: undefined,?? ??? ?// !obj['e'] 為true;?? ?!!obj['e'] ?為false;f: {},?? ??? ??? ??? ?// !obj['f'] 為false;?? ?!!obj['f'] ?為true;g: { test: 'test'}?? ?// !obj['g'] 為false;?? ?!!obj['g'] ?為true;h: []?? ??? ??? ??? ?// !obj['h'] 為false;?? ?!!obj['h'] ?為true;i: 0?? ??? ??? ??? ?// !obj['i'] 為true;?? ?!!obj['h'] ?為false;
}

3) ! 的用法— obj!

變量后使用表示類型推斷排除 null、 undefined,告訴TS此處一定有值

示例1:

const uploadRef = ref<UploadInstance>();
uploadRef.value!.clearFiles(); // 給uploadRef斷言

示例2:

function Fun (data: IParams) {const obj = data.name!; ?// 變量值可以為空,為空時返回undefined
}

4)??+ 的用法

記住:在字符串前面添加?+?號,可以將 string 轉化為 number(字符串內容為數字時才有意義)。?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/715510.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/715510.shtml
英文地址,請注明出處:http://en.pswp.cn/news/715510.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

wy的leetcode刷題記錄_Day80

wy的leetcode刷題記錄_Day80 聲明 本文章的所有題目信息都來源于leetcode 如有侵權請聯系我刪掉! 時間&#xff1a;2024-3-2 前言 目錄 wy的leetcode刷題記錄_Day80聲明前言2368. 受限條件下可到達節點的數目題目介紹思路代碼收獲 92. 反轉鏈表 II題目介紹思路代碼收獲 2368…

Redis持久化+Redis內存管理和優化+Redis三大緩存問題

Redis持久化Redis內存管理和優化Redis三大緩存問題一、Redis高可用二、Redis持久化1、RDB持久化1.1 觸發條件(1) 手動觸發(2) 自動觸發(3) 其他自動觸發機制 1.2 執行流程1.3 啟動時加載 2、AOF持久化2.1 開啟AOF2.2 執行流程(1) 命令追加(append)(2) 文件寫入(write)和文件同步…

讀書筆記-三國演義-荊州爭奪

荊州爭奪 赤壁之戰后&#xff0c;荊州成為蜀漢、曹魏和孫吳三方爭奪的焦點。劉備、曹操和孫權相繼占據荊州&#xff0c;展開了一系列激烈的軍事沖突和政治斗爭。 赤壁之戰后的荊州爭奪是三國時期曹操、劉備和孫權之間的一場激烈競爭&#xff0c;是繼赤壁之戰后三方勢力之間的…

網絡編程筆記

網絡編程 1.網絡編程常用工具 1.掃描器 每一個網絡編程者手中都有一兩個用得順手的掃描器&#xff0c;掃描器在一個老練的網絡編程者手里有著相當大的作用。利用掃描器&#xff0c;網絡編程者可以對某一網段的機器或是某臺目標機器進行快速漏洞掃描&#xff0c;因為傳統的手…

langchain學習筆記(十)

Bind runtime args | &#x1f99c;?&#x1f517; Langchain 1、有時&#xff0c;我們希望使用常量參數調用Runnable序列中的Runnable&#xff0c;這些參數不是序列中前一個Runnable的輸出的一部分&#xff0c;也不是用戶的輸入&#xff0c;這時可以用Runnable.bind() from …

關于synchronized介紹

synchronized的特性 1. 樂觀鎖/悲觀鎖自適應,開始時是樂觀鎖,如果鎖沖突頻繁,就轉換為悲觀鎖 2.輕量級/重量級鎖自適應 開始是輕量級鎖實現,如果鎖被持有的時間較長,就轉換成重量級鎖 3.自旋/掛起等待鎖自適應 4.不是讀寫鎖 5.非公平鎖 6,可重入鎖 synchronized的使用 1&#…

2024家用洗地機品牌推薦!洗地機選什么牌子好?建議選擇這幾款

如今生活節奏加快&#xff0c;工作繁忙的上班族很少有時間做家務。即使抽出時間打掃&#xff0c;也難以保持家庭長久干凈整潔。許多人聽說了智能化家居神器——洗地機&#xff0c;想要入手一臺。但在市場上各種洗地機層出不窮&#xff0c;很多人不知如何選擇。下面是我給大家整…

掌握MyBatis:輕松解鎖數據庫操作的藝術

MyBatis是一款優秀的持久層框架&#xff0c;它封裝了JDBC操作的很多繁瑣細節&#xff0c;提供了一種相對簡便的操作數據庫的方法。MyBatis通過XML描述接口綁定的SQL語句&#xff0c;以及通過Java注解的方式&#xff0c;將Java對象與數據庫表進行映射&#xff0c;從而簡化了數據…

降低85%的gc發生率:ES的GC調優實踐!

#大數據/ES #經驗 #性能 ES的服務日志出現一些gc overhead現象&#xff0c;經過調優對比&#xff0c;gc發生率顯著下降了85%&#xff0c;分享參數如下&#xff1a; ES的G1GC參數&#xff08;多實例&#xff09; -XX:UseG1GC -XX:MaxGCPauseMillis200 -XX:InitiatingHeapOccu…

Redis緩存雙寫一致性之更新策略

文章目錄 1. 經典面試題2. 雙寫一致性3. 更新策略4. canal簡介5. Redis與Mysql數據雙寫一致性工程落地案例 1. 經典面試題 上面的業務邏輯你用java代碼如何實現&#xff1f;你只要用緩存&#xff0c;就可能會涉及到redis緩存與數據庫雙存儲雙寫&#xff0c;你只要是雙寫&#x…

嵌入式學習day29 指針復習

1.指針&#xff1a; 1.提供一種間接訪問數據的方法 2.空間沒有名字,只有一個地址編號 2.指針: 1.地址:區分不同內存空間的編號 2.指針:指針就是地址,地址就是指針 3.指針變量:存放指針的變量稱為指針變量,簡稱為指針 3.指針的定義: int *p NULL; …

MyBatis中 #{} 和 ${} 區別

Mybatis的Mapper映射文件中&#xff0c;有兩種方式可以引用形參變量進行取值: #{} 和 ${}。本文將簡述兩種方式的區別和適用場景 取值引用 #{} 方式 #{}: 解析為SQL時&#xff0c;會將形參變量的值取出&#xff0c;并自動給其添加引號。 例如&#xff1a;當實參username&quo…

AI 筆記助手,你的思路整理助手

大家好&#xff0c;今天給大家介紹一款非常實用的 AI 筆記助手——AI Note。這款助手就像是一個貼心的小助手&#xff0c;能幫助我們整理筆記&#xff0c;提高學習和工作效率。 &#x1f916; AI Note 可以智能總結筆記內容&#xff0c;準確標記重點&#xff0c;讓我們更快地獲…

final關鍵字有什么作用

final關鍵字在Java中用于聲明變量、方法和類&#xff0c;表示它們的值或行為不能被修改。 被 final 修飾的類不可以被繼承 被 final 修飾的方法不可以被重寫 被 final 修飾的變量不可變&#xff0c;被 final 修飾的變量必須被顯式第指定初始值&#xff0c;還得注意的是&#…

學習助手:借助AI大模型,學習更高效!

在當今的數字時代&#xff0c;人工智能&#xff08;AI&#xff09;的崛起已經徹底改變了我們獲取信息、處理數據以及學習新知識的方式。AI大模型&#xff0c;特別是如OpenAI開發的GPT-4這類先進的技術&#xff0c;已成為學習和教育領域的一大助力。本文旨在探索如何借助AI大模型…

了解 SYN Flood 攻擊

文章目錄&#xff1a; 什么是 SYN Flood 攻擊&#xff1f;對網絡的影響SYN Flood 發生的跡象如何解決&#xff1f; 什么是 SYN Flood 攻擊&#xff1f; SYN Flood&#xff08;SYN 洪水攻擊&#xff09;是一種常見的分布式拒絕服務&#xff08;DDoS - Distributed Denial of Se…

購買騰訊云服務器請先領取代金券,2024騰訊云優惠

騰訊云優惠代金券領取入口共三個渠道&#xff0c;騰訊云新用戶和老用戶均可領取8888元代金券&#xff0c;可用于云服務器等產品購買、續費和升級使用&#xff0c;阿騰云atengyun.com整理騰訊云優惠券&#xff08;代金券&#xff09;領取入口、代金券查詢、優惠券兌換碼使用方法…

FL Studio選購指南:新手小白應該選擇哪個版本FL Studio?

很多打算入手正版FL Studio的新手朋友都會糾結一個問題&#xff1a;哪個版本的FL Studio更適合我&#xff0c;到底應該入手哪一款FL Studio&#xff1f;本文會介紹每個版本之間的差異點&#xff0c;并帶大家選擇適合自己的FL Sudio版本。 FL Studio全版本 在選購前有一些小知識…

UE5常見問題處理筆記

一、C工程中的文件出現很多頭文件找不到&#xff0c;比如&#xff1a;#include CoreMinimal.h文件提示找不到。 解決方法&#xff1a;在UE編輯器中選擇菜單Tools -> Refresh Visual Studio Project。 二、莫名其妙的編譯錯誤。 解決方法&#xff0c;找到工程根目錄下的Bi…

GO流程控制

1. if else 在Go語言中&#xff0c;關鍵字if是用于測試某個條件&#xff08;布爾型或邏輯型&#xff09;的語句&#xff0c;如果該條件成立&#xff0c;則會執行 if 后由大括號{}括起來的代碼塊&#xff0c;否則就忽略該代碼塊繼續執行后續的代碼。 if condition {// 條件為真…