類(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
}
}