泛型(TypeScript學習筆記)

泛型

解決函數傳入參數類型與函數返回值類型一致的問題。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屬性確定是undefinedip

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
}
複製代碼
相關文章
相關標籤/搜索