泛型函數

泛型函數

泛型基本場景

輸出類型與輸入類型有關,或者兩個類型以某種方式相關聯。

// function firstElement(arr: any[]) {
//  return arr[0]
// }

function firstElement<Type>(arr: Type[]): Type | undefined {
    return arr[0]
}

泛型參數的限制條件

// 函數:返回兩個值較長的那個
function longest<Type extends { length: number } > (a: Type, b: Type) { // a、b 必須存在 length 屬性
    return a.length > b.length ? a : b
}

使用受限值,執行類型參數

const arr = combine<string | number>([1, 2, 3], ["hello"])

編寫優秀的通用函數準則

  1. 可能情況下,使用類型參數本身,而不是對其進行約束
  2. 總是盡可能減少使用類型參數
  3. 如果一個類型的參數只出現在一個地方,請重新考慮你是否真的需要它
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 聲明泛型函數多類型參數泛型約束可空類型參數 ??使用泛型可以最大限度地重用代碼,提高開發效率。泛型可以應用于函數聲...
    狼性代碼人閱讀 2,148評論 0 5
  • 泛型函數也是可以重載的,其重載規則與普通函數的重載沒有啥區別。另外,泛型一般都是放在頭文件中的,這也包括它的泛型實...
    Stroman閱讀 890評論 0 0
  • 泛型 泛型是一種參數化數據類型,具有以下特點1:定義時不明確,使用時必須明確成 某種具體數據類型 的數據類型【泛型...
    wyc0859閱讀 2,525評論 0 5
  • 本文轉載自http://blog.csdn.net/youshaoduo/article/details/5486...
    desunire閱讀 1,940評論 0 0
  • 泛型,即“參數化類型”。一提到參數,最熟悉的就是定義方法時有形參,然后調用此方法時傳遞實參。那么參數化類型怎么理解...
    梁小生0101閱讀 5,103評論 0 0