解決函數傳入參數類型與函數返回值類型一致的問題。javascript
一個函數,我但願傳入數字,返回數字;傳入字符串,返回字符串, 即java
function fn1 (a: number): number {
return a + 1
}
function fn2 (b: string): string {
return b + ' :fn2'
}
複製代碼
有沒有支持不一樣類型的方式,any數組
function fn3 (c: any): any {
return c
}
複製代碼
但是使用any,不能保證返回值類型和傳入參數類型屬於相同類型函數
使用泛型!ui
function fn1<T>(a: T): T{
return a + 1
}
複製代碼
能夠看到,使用尖括號便可使用泛型函數spa
還有一種方式使用泛型函數:類型推斷,什麼也不用作,智能判斷code
有個問題,下面的泛型函數,函數體中訪問了參數的length
屬性,若是傳入參數屬字符串或數組,沒問題,但若是是number
類型呢,length
屬性確定是undefined
ip
function fn1<T>(a: T): T{
console.log(a.length)
return a + 1
}
複製代碼
使用泛型變量, 聲明泛型數組便可字符串
function fn1<T>(a: T[]): T[]{
console.log(a.length)
return a + 1
}
複製代碼