TypeScript中使用類型斷言的幾種方式分享
正文
- 為什么需要類型斷言
盡管類型推斷很智能,但同時(shí)也很死板,不懂得變通。如果嚴(yán)格按照推斷來定義類型可能會(huì)讓開發(fā)者付出一些額外的卻有不必要的工作與精力。事實(shí)上,開發(fā)者在不犯錯(cuò)的情況下,往往比編譯器更清楚自己想要的類型,因此需要一種手段來繞過默認(rèn)的推導(dǎo)行為
- 如何斷言
1.as
通過as關(guān)鍵字,可以強(qiáng)制將一個(gè)類型斷言為另一個(gè)類型。如下,將Ani
斷言為Spp
2.as const
在TypeScript
中,let
聲明的變量具有更寬泛的類型推導(dǎo)
而const
則范圍更小
下邊是一個(gè)與聯(lián)合類型結(jié)合使用的例子。由于s
表示的是一個(gè)更寬泛的number
類型,number
又是1|2
的父類型,從而產(chǎn)生報(bào)錯(cuò)
此時(shí),只需要將s
替換為ss
,由于ss
表示的是子類型,根據(jù)協(xié)變特性,子類型可以代替父類型使用
3.非空斷言
當(dāng)我們明確在一定條件下,某個(gè)對象的某個(gè)key
一定存在時(shí),可以通過!
進(jìn)行標(biāo)記
- 斷言的條件
斷言與any不同,它必須在一定的條件和范圍內(nèi)才能實(shí)現(xiàn)類型的互換,如下,兩個(gè)不相干的類型之間無法斷言
斷言的前提條件是兩個(gè)類型之間存在父子關(guān)系,能夠產(chǎn)生協(xié)變或者逆變
- 超越斷言規(guī)則的斷言
由于unknow
是any
的子類型,而any
又是任意類型的父類型,因此通過此中轉(zhuǎn),可以完成任意類型的斷言轉(zhuǎn)換
如果本文對您有用,希望能得到您的點(diǎn)贊和收藏
到此這篇關(guān)于TypeScript中使用類型斷言的幾種方式分享的文章就介紹到這了,更多相關(guān)TypeScript類型斷言的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
jQuery實(shí)現(xiàn)動(dòng)態(tài)生成表格并為行綁定單擊變色動(dòng)作的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)動(dòng)態(tài)生成表格并為行綁定單擊變色動(dòng)作的方法,涉及jQuery頁面元素遍歷與事件動(dòng)態(tài)響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下2017-04-04JavaScript腳本性能優(yōu)化注意事項(xiàng)
本文總結(jié)了我在JavaScript編程中所找到的提高JavaScript運(yùn)行性能的一些方法,其實(shí)這些經(jīng)驗(yàn)都基于幾條原則2008-11-11JS實(shí)現(xiàn)線性表的鏈?zhǔn)奖硎痉椒ㄊ纠窘?jīng)典數(shù)據(jù)結(jié)構(gòu)】
這篇文章主要介紹了JS實(shí)現(xiàn)線性表的鏈?zhǔn)奖硎痉椒?簡單講解了線性表鏈?zhǔn)奖硎镜脑聿⒔Y(jié)合實(shí)例形式分析了js針對線性表鏈?zhǔn)奖硎镜膭?chuàng)建、插入、刪除等節(jié)點(diǎn)操作技巧,需要的朋友可以參考下2017-04-04Javascript的并行運(yùn)算實(shí)現(xiàn)代碼
隨著多核cpu的普級(jí),并發(fā)/并行多線程運(yùn)算在主流的編程語言越來越流行,而在目前Javascript實(shí)現(xiàn)中還看不到在語言方面支持多線程,現(xiàn)在Javascript如此流行,真希望今后會(huì)在語言的層面有很大的變化.2010-11-11JS及JQuery對Html內(nèi)容編碼,Html轉(zhuǎn)義
本文主要介紹了JS及JQuery對Html內(nèi)容編碼,Html轉(zhuǎn)義的方法。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02setTimeout時(shí)間設(shè)置為0詳細(xì)解析
setTimeout( ) 是屬于 window 的 method, 但我們都是略去 window 這頂層容器名稱, 這是用來設(shè)定一個(gè)時(shí)間, 時(shí)間到了, 就會(huì)執(zhí)行一個(gè)指定的 method,下面這篇文章主要給大家介紹了關(guān)于setTimeout時(shí)間設(shè)置為0的相關(guān)資料,需要的朋友可以參考下。2018-03-03