TypeScript函數(shù)和類型斷言實(shí)例詳解
開始
現(xiàn)在要加速學(xué)習(xí)了,大佬們有沒有內(nèi)推,給個(gè)推薦
會(huì)vue2/vue3 + ts
斷言
非空斷言
非空斷言就是確定這個(gè)變量不是null或者undefined,就是把null或者undefined從他的類型中排除
function demo(message:string|undefined|null) {
const str: string = message
}
demo(undefined)此時(shí)我們沒有用非空斷言,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í)代碼沒有問題
類型斷言
確定此時(shí)的變量類型
尖括號(hào)
我們可以用尖括號(hào)
let message: any = "scc" let mesLength:number = (<string>message).length

as
as用來判斷變量是不是后面的類型
let message: any = "scc" let mesLength:number = (message as string).length
確定賦值斷言
這個(gè)變量一定會(huì)被賦值,就可以使用確定賦值斷言
let message!:string
變量名后面添加一個(gè)!就可以
類型守衛(wèi)
ts類型守衛(wèi)就是起到一個(gè)縮小類型范圍作用
trpeof
typeof關(guān)鍵字可以使用===判斷此時(shí)的類型是什么
function demo(message: string | number | boolean) {
if (typeof message === "string") {
message.toUpperCase()
}
}此時(shí)message的類型被縮小成string類型,所以能調(diào)用toUpperCase方法
道理很簡單,相信有一定基礎(chǔ)的同學(xué)很快就會(huì)明白
in
in用來判斷變量是否在類型范圍內(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ù),如果傳值,那么值為傳來的值,不傳就是默認(rèn)值
函數(shù)重載
函數(shù)重載可以讓函數(shù)根據(jù)傳值得類型,自動(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ù)和類型斷言的文章就介紹到這了,更多相關(guān)TS函數(shù)和類型斷言內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
上傳圖片預(yù)覽JS腳本 Input file圖片預(yù)覽的實(shí)現(xiàn)示例
需要一個(gè)用戶上傳頭像預(yù)覽的功能,因此寫了一段上傳圖片預(yù)覽JS腳本,Input file圖片預(yù)覽的實(shí)現(xiàn),需要的朋友可以看看2014-10-10
JS實(shí)現(xiàn)的系統(tǒng)調(diào)色板完整實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)的系統(tǒng)調(diào)色板,結(jié)合完整實(shí)例形式分析了js實(shí)現(xiàn)調(diào)色板效果的具體步驟與實(shí)現(xiàn)技巧,涉及js數(shù)值計(jì)算與頁面元素操作的方法,需要的朋友可以參考下2016-12-12
使用typescript+webpack構(gòu)建一個(gè)js庫的示例詳解
這篇文章主要介紹了typescript+webpack構(gòu)建一個(gè)js庫,本文主要記錄使用typescript配合webpack打包一個(gè)javascript library的配置過程,需要的朋友可以參考下2022-07-07
JavaScript基礎(chǔ)知識(shí)之方法匯總結(jié)
本文給大家分享了javascript基礎(chǔ)知識(shí),包括數(shù)組的方法,函數(shù)的方法,數(shù)字的方法,對(duì)象的方法,字符串的方法,常規(guī)方法,正則表達(dá)式方法,本文介紹的非常詳細(xì),具有參考價(jià)值特此分享供大家參考2016-01-01
javascript中全局對(duì)象的isNaN()方法使用介紹
全局對(duì)象的isNaN()方法通常用于檢測 parseFloat() 和 parseInt() 的結(jié)果,下面為大家介紹下其具體的使用,感興趣的朋友可以參考下2013-12-12
BootStrap glyphicons 字體圖標(biāo)實(shí)現(xiàn)方法
字體圖標(biāo)是在 Web 項(xiàng)目中使用的圖標(biāo)字體。接下來通過本文給大家介紹BootStrap glyphicons 字體圖標(biāo)實(shí)現(xiàn)方法,需要的朋友參考下2016-05-05
JS call()及apply()方法使用實(shí)例匯總
這篇文章主要介紹了JS call()及apply()方法使用實(shí)例匯總,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07

