TypeScript類(lèi)型推斷、聯(lián)合類(lèi)型、類(lèi)型斷言

類(lèi)型推斷

typescript中,在定義變量時(shí),并非一定要聲明類(lèi)型,如果沒(méi)有明確的指定這個(gè)變量的類(lèi)型,將會(huì)依據(jù)賦值時(shí)值的類(lèi)型推斷出一個(gè)類(lèi)型,例如

let str = 'jsthin'

當(dāng)我們鼠標(biāo)放在其上是,可以看到str這個(gè)變量是string類(lèi)型的,這就是類(lèi)型推斷


類(lèi)型推斷.png

但是,這種推斷在以下這種情況是不行的,會(huì)被認(rèn)為是any類(lèi)型

let str // str類(lèi)型為any
str = 'jsthin'

由此看來(lái),類(lèi)型推斷也是有條件的,就是定義這個(gè)變量時(shí)需要賦值

聯(lián)合類(lèi)型

聯(lián)合類(lèi)型(Union Types)可以通過(guò)管道(|)將變量設(shè)置多種類(lèi)型,賦值時(shí)可以根據(jù)設(shè)置的類(lèi)型來(lái)賦值

function getString(str: string|number): string {
  return str.toString()
}
getString(123)
getString('123')

類(lèi)型斷言

斷言,就是將一個(gè)聯(lián)合類(lèi)型指定為其中一個(gè)類(lèi)型

function getString(str: string|number):number {
  if((<string>str).length) {
    // str斷言為string類(lèi)型
    return (str as string).length
  } else {
    return str.toString().length
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容