TypeScript - 泛型

本文介绍了TypeScript中的泛型,从值和类型的概念出发,解释了泛型的必要性和作用。通过实例展示了如何使用泛型进行类型编程,包括泛型函数、泛型约束等,并探讨了何时适合使用泛型。
摘要由CSDN通过智能技术生成

        最近上手TS,泛型是我一直迷糊的点,官网泛型的部分反反复复看了好几遍,讲解泛型的文章也看了不少,好像是懂了,又好像不懂。
        如果问我泛型是什么,嗯,支持多类型数据?传入类型影响输出类型?理解成更严格的any?带<>?如果你的回答和我一样,恭喜你,你已经达到了你以为你懂,实战就蒙的境界~(不信,去找个开源TS项目的源码看看。)
        今天终于搞明白泛型了,写一个笔记,文章有点长,如果你也是TS小白,强烈建议看一下,因为我也是小白,我懂你~如果你是大佬,点关闭~哈哈哈哈哈

一、值和类型 *

        泛型是一种抽象类型,string,number,boolean等是一种具体类型,具体类型我们多是对值进行编程,泛型是对类型进行编程。
        这句话听起来抽象,但是最终我明白了泛型,也是因为这句话。

1、对值编程
  • TS中我们常用的就是对值限定类型。从集合论的角度上来说, 值的集合就是类型。
  • 下面的例子,可以看出是对具体的值 ‘lianlian’ 进行编程,字符串 ‘lianlian’ 就是 string 类型的一个具体的值 。所以,这就是我们常用的对值限定类型,对值进行的编程。
function sayName(name: string) {
   
	console.log(`my name is ${
     name}`)
}
sayName('lianlian')
二、泛型

        上面说了很多,我们了解了类型和值的区别。也了解了我们平时使用的简单类型,本质上都是对值进行编程,只是在编程之前,对将值限定了类型~

1、为什么需要泛型

        想实现一个identity函数,这个函数会返回任何传入它的值(肯定传入和返回的类型也是相同)。(官网上你一定看过这个函数例子~)。
        可以使用any这样写,但是这样写会丢失一些信息:传入的类型和返回的类型要求是相同的。如果我们传入一个’lianlian’,只知道任何类型的值都有可能被返回。

function identity(arg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值