TS泛型初识

泛型是TypeScript中的一个重要特性,它允许我们在编写代码时定义类型参数,以提高代码的复用性和类型安全性。泛型不同于使用`any`类型,它允许我们在不牺牲类型检查的情况下处理多种数据类型。通过泛型约束,我们可以限制传入参数的类型,例如确保函数参数必须具有特定的属性或方法。在接口约束泛型的例子中,`stu`函数要求传入的对象必须符合`Person`接口,从而确保了数据类型的正确性。
摘要由CSDN通过智能技术生成

泛型的理解和定义

泛型是一种特殊的变量,只用于表示类型而不是值,称之为:类型变量。

当我们定义一个变量不确定类型的时候有两种解决方式:

1、使用any
使用any定义时存在的问题:虽然可以知道传入值的类型但是无法获取函数返回值的类型;使用过多的any失去了ts类型保护的优势,就变成众人口中的anyscript
2、使用泛型 泛型指的是在定义函数/接口/类型时,不预先指定具体的类型,具体什么类型是调用这个方法的时候决定的

泛型的定义:可以支持不特定的数据类型 要求传入和返回的参数一致

通俗理解:泛型就是解决类,接口,方法的复用性,和对不特定数据类型的支持

泛型约束 

泛型约束即是对泛型的类型进行约束控制,当在函数里使用泛型参数的属性或者方法时,就需要对泛型进行约束。如下所示的student函数可以接受你选择要传递到类型变量的任何类型。但是,在这种情况下,你应该将 value参数可以接受的类型限制为可以对其执行添加操作的一系列类型,而不是接受任何可能的类型。这种情况称为“泛型约束”。

 使用接口约束泛型

interface Person {
  name:string;
  age:number;
}
function stu<T extends Person>(value:T):T {
  return value;
}

stu({name:'liangbing'}); //错误写法, "{ name: string; }"类型 中缺少属性 "age",但 "Person" 中需要该属性
stu({ name: "liangbing" , age:'18'}); //错误写法,不能将“string”类型分配给“number”类型
stu({ name: "liangbing" , age:18});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值