泛型函数

泛型函数

泛型基本场景

输出类型与输入类型有关,或者两个类型以某种方式相关联。

// 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,185评论 0 5
  • 泛型函数也是可以重载的,其重载规则与普通函数的重载没有啥区别。另外,泛型一般都是放在头文件中的,这也包括它的泛型实...
    Stroman阅读 900评论 0 0
  • 泛型 泛型是一种参数化数据类型,具有以下特点1:定义时不明确,使用时必须明确成 某种具体数据类型 的数据类型【泛型...
    wyc0859阅读 2,568评论 0 5
  • 本文转载自http://blog.csdn.net/youshaoduo/article/details/5486...
    desunire阅读 1,956评论 0 0
  • 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解...
    梁小生0101阅读 5,139评论 0 0