TypeScript函數(shù)和類(lèi)型斷言實(shí)例詳解
開(kāi)始
現(xiàn)在要加速學(xué)習(xí)了,大佬們有沒(méi)有內(nèi)推,給個(gè)推薦
會(huì)vue2/vue3 + ts
斷言
非空斷言
非空斷言就是確定這個(gè)變量不是null或者undefined,就是把null或者undefined從他的類(lèi)型中排除
function demo(message:string|undefined|null) { const str: string = message } demo(undefined)
此時(shí)我們沒(méi)有用非空斷言,message的值是undefined和null,所以不能賦值給str,此事運(yùn)行會(huì)報(bào)錯(cuò)(Type 'string | null | undefined' is not assignable to type 'string'.Type 'undefined' is not assignable to type 'string'.)
如果用上非空斷言
let message:string function demo(message:string|undefined|null) { const str: string = message! } demo(undefined)
此時(shí)代碼沒(méi)有問(wèn)題
類(lèi)型斷言
確定此時(shí)的變量類(lèi)型
尖括號(hào)
我們可以用尖括號(hào)
let message: any = "scc" let mesLength:number = (<string>message).length
as
as用來(lái)判斷變量是不是后面的類(lèi)型
let message: any = "scc" let mesLength:number = (message as string).length
確定賦值斷言
這個(gè)變量一定會(huì)被賦值,就可以使用確定賦值斷言
let message!:string
變量名后面添加一個(gè)!就可以
類(lèi)型守衛(wèi)
ts類(lèi)型守衛(wèi)就是起到一個(gè)縮小類(lèi)型范圍作用
trpeof
typeof關(guān)鍵字可以使用===判斷此時(shí)的類(lèi)型是什么
function demo(message: string | number | boolean) { if (typeof message === "string") { message.toUpperCase() } }
此時(shí)message的類(lèi)型被縮小成string類(lèi)型,所以能調(diào)用toUpperCase方法
道理很簡(jiǎn)單,相信有一定基礎(chǔ)的同學(xué)很快就會(huì)明白
in
in用來(lái)判斷變量是否在類(lèi)型范圍內(nèi)
interface Person { name: string age:number } interface Dog { name: string walk:string } type x = Dog|Person function all(emp: x) { if ("walk" in emp) { console.log(d.walk); } }
函數(shù)
可選參數(shù)
參數(shù)可以設(shè)成可選參數(shù),可選參數(shù)最好在必填參數(shù)和有默認(rèn)值的參數(shù)后面
function demo(num:number,str?:string){ }
默認(rèn)值參數(shù)
function demo(num:number,bol:boolean = true,str?:string){ }
bol就是有默認(rèn)值的參數(shù),如果傳值,那么值為傳來(lái)的值,不傳就是默認(rèn)值
函數(shù)重載
函數(shù)重載可以讓函數(shù)根據(jù)傳值得類(lèi)型,自動(dòng)選擇應(yīng)該執(zhí)行的函數(shù)
function add(a1: number, a2: number):number function add(a1: string, a2: string):string function add(a1: any, a2: any):any { return a1 + a2 } console.log(add(20,30)); console.log(add("scc","brd"));
當(dāng)我們傳入不同的值時(shí),會(huì)返回調(diào)用不同的函數(shù)
結(jié)束
到此這篇關(guān)于TypeScript函數(shù)和類(lèi)型斷言的文章就介紹到這了,更多相關(guān)TS函數(shù)和類(lèi)型斷言?xún)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript中保留小數(shù)點(diǎn)后N位方法總結(jié)
這篇文章主要為大家詳細(xì)介紹了JavaScript中保留小數(shù)點(diǎn)后N位的幾個(gè)常用方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-06-06jquery SweetAlert插件實(shí)現(xiàn)響應(yīng)式提示框
為了滿(mǎn)足用戶(hù)體驗(yàn)度,使用SweetAlert插件實(shí)現(xiàn)響應(yīng)式提示框效果非常好,下面通過(guò)這篇文章給大家介紹jquery SweetAlert插件實(shí)現(xiàn)響應(yīng)式提示框,需要的朋友可以參考下2015-08-08Javascript調(diào)試腳本的經(jīng)驗(yàn)之談
隨著用JavaScript編程的深入,你會(huì)開(kāi)始理解那些JavaScript給出的不透明錯(cuò)誤信息。一旦你理解了你常犯的一般性錯(cuò)誤,你就會(huì)很快知道怎樣避免它們,這樣你寫(xiě)的代碼中的錯(cuò)誤將越來(lái)越少。2008-10-10JavaScript之Canvas_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了JavaScript之Canvas,Canvas是HTML5新增的組件,它就像一塊幕布,可以用JavaScript在上面繪制各種圖表、動(dòng)畫(huà)等2017-07-07JavaScript中eval和with語(yǔ)句如何影響作用域鏈的深度探索
這篇文章主要為大家介紹了JavaScript中eval和with語(yǔ)句如何影響作用域鏈的深度探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05刪除javascript所創(chuàng)建子節(jié)點(diǎn)的方法
這篇文章主要介紹了刪除javascript所創(chuàng)建子節(jié)點(diǎn)的方法,涉及javascript針對(duì)頁(yè)面節(jié)點(diǎn)元素的操作技巧,需要的朋友可以參考下2015-05-05使用JavaScript通過(guò)前端發(fā)送電子郵件
這篇文章主要介紹了使用JavaScript通過(guò)前端發(fā)送電子郵件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05JS中showModalDialog關(guān)閉子窗口刷新主窗口用法詳解
這篇文章主要介紹了JS中showModalDialog關(guān)閉子窗口刷新主窗口用法,結(jié)合具體實(shí)例形式較為詳細(xì)的分析了showModalDialog常見(jiàn)用法與相關(guān)使用技巧,需要的朋友可以參考下2017-03-03