国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

TypeScript 中的感嘆號,你知道它嗎?

開發(fā) 前端
當(dāng)使用非空斷言運算符時,就表示告訴TypeScript,我比你更了解這個代碼邏輯,會為此負(fù)責(zé),所以我們需要充分了解自己的代碼之后再確定是否要使用這個運算符。否則,如果由于某種原因斷言不正確,則會發(fā)生運行時錯誤。

在 TypeScript 中感嘆號 ( ! ) 運算符可以使編譯器忽略一些錯誤,下面就來看看感嘆號運算符有哪些實際的用途的以及何時使用。

1. 非空斷言運算符

感嘆號運算符稱為非空斷言運算符,添加此運算符會使編譯器忽略undefined和null類型。來看例子:

const parseValue = (value: string) => {
// ...
};

const prepareValue = (value?: string) => {
// ...
parseValue(value);
};

對于 prepareValue 方法的 value 參數(shù),TypeScript就會報出以下錯誤:

類型“string | undefined”的參數(shù)不能賦給類型“string”的參數(shù)。
不能將類型“undefined”分配給類型“string”。

類型“string | undefined”的參數(shù)不能賦給類型“string”的參數(shù)。不能將類型“undefined”分配給類型“string”。

因為我們希望 prepareValue 函數(shù)中的 value 是 undefined 或 string,但是我們將它傳遞給了 parseValue 函數(shù),它的參數(shù)只能是 string。所以就報了這個錯誤。

但是,在某些情況下,我們可以確定 value 不會是 undefined,而這就是需要非空斷言運算符的情況:

const parseValue = (value: string) => {
// ...
};

const prepareValue = (value?: string) => {
// ...
parseValue(value!);
};

這樣就不會報錯了。但是,在使用它時應(yīng)該非常小心,因為如果 value 的值是undefined ,它可能會導(dǎo)致意外的錯誤。

2. 使用示例

既然知道了非空斷言運算符,下面就來看幾個真實的例子。

在列表中搜索是否存在某個項目:

interface Config {
id: number;
path: string;
}

const configs: Config[] = [
{
id: 1,
path: "path/to/config/1",
},
{
id: 2,
path: "path/to/config/2",
},
];

const getConfig = (id: number) => {
return configs.find((config) => config.id === id);
};

const config = getConfig(1);

由于搜索的內(nèi)容不一定存在于列表中,所以 config 變量的類型是 Config | undefined,我們就可以使用可以使用費控斷言運算符告訴 TypeScript,config 應(yīng)該是存在的,因此不必假設(shè)它是 undefined。

const getConfig = (id: number) => {
return configs.find((config) => config.id === id)!;
};

const config = getConfig(1);

這時,config 變量的類型就是 Config。這時再從 config 中獲取任何屬性時,就不需要再檢查它是否存在了。

再來看一個例子,React 中的 Refs 提供了一種訪問 DOM 節(jié)點或 React 元素的方法:

const App = () => {
const ref = useRef<HTMLDivElement>(null);

const handleClick = () => {
if(ref.current) {
console.log(ref.current.getBoundingClientRect());
}
};

return (
<div className="App" ref={ref}>
<button onClick={handleClick}>Click</button>
</div>
);
};

這里創(chuàng)建了一個簡單的組件,它可以訪問 class 為 App 的 DOM 節(jié)點。組件中有一個按鈕,當(dāng)點擊該按鈕時,會顯示元素的大小以及其在視口中的位置。我們可以確定被訪問的元素是在點擊按鈕后掛載的,所以可以在 TypeScript 中添加非空斷言運算符表示這個元素是一定存在的:

const App = () => {
const handleClick = () => {
console.log(ref.current!.getBoundingClientRect());
};
};

當(dāng)使用非空斷言運算符時,就表示告訴TypeScript,我比你更了解這個代碼邏輯,會為此負(fù)責(zé),所以我們需要充分了解自己的代碼之后再確定是否要使用這個運算符。否則,如果由于某種原因斷言不正確,則會發(fā)生運行時錯誤。

責(zé)任編輯:武曉燕 來源: 前端充電寶
相關(guān)推薦

2015-06-19 11:00:09

bash

2023-01-13 16:53:17

Annotation底層元注解

2020-12-24 10:40:44

Linux命令文件

2020-08-13 09:35:50

Linux命令軟件

2022-04-07 16:03:36

JavaScriptTypeScript

2023-05-10 11:16:01

Java虛擬機對象

2023-05-07 08:04:36

Java程序回收算法

2022-01-06 08:58:49

代碼

2022-09-22 14:55:31

前端JavaScripthis

2022-09-26 13:10:17

JavaScriptthis

2020-05-15 14:34:16

C語言丹尼斯 · 里奇開發(fā)者

2018-08-20 20:46:07

2022-06-29 08:32:04

游標(biāo)MySQL服務(wù)器

2021-02-18 16:06:43

JavaStream代碼

2020-09-19 17:44:32

Linux計算器命令

2021-02-26 08:46:46

PHY寄存器網(wǎng)絡(luò)

2023-05-05 08:41:16

SQL字符函數(shù)

2021-12-19 13:41:46

WiFi電腦技術(shù)

2021-10-17 13:10:56

函數(shù)TypeScript泛型

2020-09-15 08:35:57

TypeScript JavaScript類型
點贊
收藏

51CTO技術(shù)棧公眾號

国产精品麻豆免费版| 青青草91久久久久久久久| 四虎影院一区二区三区| 激情小说 在线视频| 天天综合天天| 亚洲一区二区三区四区电影| 久久久欧美精品sm网站| 欧美理论片在线观看| 欧美日韩亚洲一二三| av在线播放一区二区| 91香蕉视频污| 97国产在线视频| 免费观看v片在线观看| 日韩一级毛片| 成人美女视频| 欧美三区不卡| 亚洲一区导航| 91精选在线| 成人av小说网| 91麻豆精品国产91久久久平台 | 欧美精品在线免费播放| 国内自拍视频网| 青青草国产免费一区二区下载| 国内精品小视频在线观看| 在线观看av资源| 青青青伊人色综合久久| 亚洲最新中文字幕| 性欧美videossex精品| 亚洲精品888| 精品久久久久香蕉网| 国内外成人激情视频| 欧美日韩水蜜桃| 精品国产伦一区二区三区免费| 日本福利视频在线| 日韩久久综合| 97se亚洲综合在线| 久久久久久久性潮| 午夜精品在线看| 久久国产精品免费观看| 粉嫩一区二区三区四区公司1| 精品日韩中文字幕| 国产盗摄视频在线观看| 中日韩免视频上线全都免费| 欧美一级视频精品观看| 国产精品99久久99久久久二8| 美女隐私在线观看| 亚洲国产精品精华液ab| 免费观看国产成人| 老牛影视av一区二区在线观看| 欧美偷拍一区二区| 在线免费观看日本欧美| 欧美亚洲视频一区二区| 国产精自产拍久久久久久| 一级毛片免费视频| 欧美剧在线免费观看网站| 欧美久久一二区| 国产精品自拍偷拍| 国产小视频在线| 97超碰人人澡| 久久露脸国产精品| 99视频在线视频| 91精品一区二区三区综合| 亚洲视频香蕉人妖| 日本女人一区二区三区| 欧美精品久久99久久在免费线| 国产对白在线正在播放| 美女精品一区二区| 狠狠久久伊人| 亚洲超丰满肉感bbw| 极品校花啪啪激情久久| 亚洲xxx视频| 丁香花在线影院| 成年网站在线视频网站| 香蕉久久夜色精品国产| 99久久亚洲精品蜜臀| 亚洲国产精品综合久久久 | 超碰97人人射妻| 小说区图片区图片区另类灬| 欧美电影在线观看免费| 国产区在线看| 免费影视亚洲| 香蕉视频亚洲一级| 久久精品欧美一区| 亚洲一区二区三区在线免费观看| 成人午夜剧场免费观看完整版| 久久久激情视频| 国产一区二区在线视频播放| 国产精品网站一区| 国产一级片黄色| 国产女人18水真多18精品一级做| 欧美日韩精品中文字幕| 免费成人深夜夜行网站视频| 久久一区二区视频| a在线免费观看| 午夜天堂影视香蕉久久| 牛牛电影国产一区二区| 最猛黑人系列在线播放| 日韩欧美精品免费在线| 久久久久久久午夜| 国产黄色在线| 国产日韩欧美久久| 看亚洲a级一级毛片| 韩国视频一区二区| 亚洲麻豆国产自偷在线| 色吧亚洲视频| 丁香亚洲综合激情啪啪综合| 久久久久免费精品国产| 一区视频在线看| 国产一区二区三区视频免费| 91av资源网| 欧美日韩久久一区二区| 蜜桃久久影院| 亚洲免费av网站| 日韩丝袜视频| 亚洲精品一区中文字幕乱码| 最近2018年手机中文在线| 亚洲欧美日韩另类| wwwwxxxx在线观看| 免费中文字幕日韩欧美| 国产精品乱子乱xxxx| 国产精品国产三级国产普通话三级 | 久久婷婷一区二区三区| 美女网站在线看| 国产亚洲精品综合一区91| 国产视频一区三区| 国产奶头好大揉着好爽视频| 国产成人免费视频网站高清观看视频| 永久免费看av| 日韩成人在线播放| 高清久久精品| 国产精品视频网| 性久久久久久| 精品资源在线看| 成人激情综合网| 九九九久久久精品| 91日韩视频在线观看| 色综合色综合网色综合| 国产影视精品一区二区三区| 91亚洲va在线va天堂va国| 亚洲欧美日韩国产| av在线免费网址| 日韩福利在线| 精品卡一卡二卡三卡四在线| gogo在线观看| 日韩精品av一区二区三区| 日韩精品一区二区三区四区| 日韩高清中文字幕一区二区| 香蕉视频在线网址| 日韩在线观看免费网站| 97久久视频| 美丽的姑娘在线观看免费动漫| 亚洲日本欧美日韩高观看| 91成人福利| 一菊综合网成人综合网| 国产精品wwww| 国产麻豆日韩欧美久久| 亚洲综合日韩欧美| 日本韩国欧美精品大片卡二| 欧美亚洲在线| 国产精品午夜视频| 自拍偷拍亚洲激情| 在线免费观看a视频| 亚洲欧美国产不卡| 国产精品久久久久久久久免费丝袜| 成人台湾亚洲精品一区二区 | 91爱爱小视频k| 欧美在线综合| 激情av在线| 黄色片一级视频| 7777kkkk成人观看| 在线观看视频一区二区 | 中文字幕在线免费不卡| 欧美亚洲国产激情| 日本在线观看免费| 免费99精品国产自在在线| 中文字幕免费不卡| 欧美日韩三区| 国产综合av| 久久久久久久久一区二区| 国产精品色噜噜| 制服丝袜在线播放| 日韩中文字幕三区| 91色精品视频在线| 亚洲欧美资源在线| 一区二区三区加勒比av| 99亚洲伊人久久精品影院| 99国产超薄丝袜足j在线观看| 久久综合成人精品亚洲另类欧美| 久久av综合| 男女激情无遮挡| 国产精品美女在线观看| 精品91自产拍在线观看一区| 欧美日韩看看2015永久免费| 亚洲综合在线电影| 99porn视频在线| 欧美大片免费看 | 午夜精品久久久久久久99黑人| 国产精品狠色婷| 热久久最新地址| 国产在线拍揄自揄拍视频 |