typescript-泛型

泛型:在定义函数,接口,类的时候不能预先确定要使用的数据的类型,而是在使用函数,接口,类的时候才能确定数据的类型。

function getArr<T>(value:T,count:number):T[]{
    //根据数据和数量产生一个数组
    const arr:Array<T>=[];
    for(let i=0; i<count;i++){
        arr.push(value)
    }
    return arr
}
const arr1=getArr<number>(10,5)
const arr2=getArr<string>('123',4)

多个泛型参数的函数:函数中有多个泛型的参数

function getMsg<T,V>(value1:T,value2:V):[T,V]{
  
    return arr[value1,value2]
}
const arr1=getMsg<string,number>('10',5)
const arr2=getMsg<string,number>('123',4)

泛型接口

通过一个类的实例对象调用add方法可以添加多个用户信息对象,调用getUserId方法可以根据id获取某个指定的用户信息对象

//定义一个泛型接口
interface IBbaseCRUD<T>{
    data:Array<T>
    add:(t:T)=>T
    getUserId:(id:number)=>T
}
// 定义一个用户信息的类
class User{
    id?:number//用户的id。?代表此属性可有可无
    name:string//用户的姓名
    age:number//用户的年龄
    constructor(name:string,age:number){
        this.name=name
        this.age=age
    }
}
//定义一个类,可以陈队用户的信息对象进行增加以及查询的操作
class UserCRUD implements IBbaseCRUD<User>{
    //用来保存多个User类型的用户信息对象
    data:Array<User>=[]
    //方法用来存储用户信息对象
    add(user:User):User{
        // 产生id
        user.id=Date.now()+Math.random()
        //把用户信息对象添加到data数组中
        this.data.push(user)
        return user
    }
    //根据id查询指定的用户对象
    getUserId(id:number):User{
        return this.data.find(user => user.id===id)
    }
    
}
const userCRUD:UserCRUD=new UserCRUD()
userCRUD.add(new User('wy',18))
console.log(userCRUD.getUserId(123))

泛型类

class GenericNumber<T>{
    defaultValue:T
    add:(x:T,y:T)=>T
}
//在实例化对象的时候,再确定泛型的类型
const g1:GenericNumber<number>=new GenericNumber<number>()
g1.defaultValue=100
g1.add=function(x,y){
    return x+y
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值