第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在打字稿中,什么是!解除引用會員時(感嘆號/爆炸)運營商?

在打字稿中,什么是!解除引用會員時(感嘆號/爆炸)運營商?

在打字稿中,什么是!解除引用會員時(感嘆號/爆炸)運營商?在查看tslint規(guī)則的源代碼時,我遇到了以下語句:if (node.parent!.kind === ts.SyntaxKind.ObjectLiteralExpression) {     return;}注意!操作員之后node.parent。有趣!我首先嘗試使用我當前安裝的TS版本(1.5.3)在本地編譯該文件。結(jié)果錯誤指向爆炸的確切位置:$ tsc --noImplicitAny memberAccessRule.ts  noPublicModifierRule.ts(57,24): error TS1005: ')' expected.接下來我升級到最新的TS(2.1.6),編譯它沒有問題。所以它似乎是TS 2.x的特征。但是,轉(zhuǎn)化完全忽略了爆炸,導致以下JS:if (node.parent.kind === ts.SyntaxKind.ObjectLiteralExpression) {     return;}我的Google fu到目前為止都沒有讓我失望。什么是TS的感嘆號操作符,它是如何工作的?
查看完整描述

3 回答

?
有只小跳蛙

TA貢獻1824條經(jīng)驗 獲得超8個贊

那是非空斷言運算符。這是一種告訴編譯器“這個表達式不能nullundefined在這里,所以不要抱怨它null或它的可能性undefined”的方法。有時類型檢查器本身無法做出決定。

這里解釋如下:

可以使用新的!post-fix表達式運算符來斷言其操作數(shù)在類型檢查器無法推斷該事實的上下文中是非空且非未定義的。具體而言,該操作x!產(chǎn)生x具有nullundefined排除的類型的值。類似鍵入的形式斷言<T>xx as T,所述!非空斷言操作者簡單地在所發(fā)射的JavaScript代碼移除。

我發(fā)現(xiàn)在這個解釋中使用“斷言”一詞有點誤導。它是“斷言”的,即開發(fā)人員斷言它,而不是在將要執(zhí)行測試的意義上。最后一行確實表明它不會發(fā)出任何JavaScript代碼。


查看完整回答
反對 回復 2019-07-23
?
largeQ

TA貢獻2039條經(jīng)驗 獲得超8個贊

路易斯的答案很棒,但我想我會試著簡潔地總結(jié)一下:

bang運算符告訴編譯器暫時放松它可能需要的“非空”約束。它告訴編譯器:“作為開發(fā)人員,我比你更了解這個變量現(xiàn)在不能為null”。


查看完整回答
反對 回復 2019-07-23
?
慕田峪4524236

TA貢獻1875條經(jīng)驗 獲得超5個贊

作為一個激勵性的例子:使用新的ES Map類型和dict.has(key) ? dict.get(key) : 'default';TS編譯器之類的代碼不能推斷出get調(diào)用永遠不會返回null / undefined。dict.has(key) ? dict.get(key)! : 'default';正確縮小類型。

查看完整回答
反對 回復 2019-07-23
  • 3 回答
  • 0 關注
  • 569 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號