ts泛型接口的使用

泛型接口

console.log('#######泛型接口');
(() =>{
    /* 
     在定义接口时,为接口的属性或者方法定义泛型类型
     在使用接口时,再指定具体的泛型类型
    
    */

     //需求:定义一个类来存储用户的相关信息(id,名字,年龄)
     //通过一个类的实例对象来调用相关(add)的方法可以添加多个用户信息对象,调用getUersId方法可以根据id获取某个指定的用户信息对象

     //定义一个泛型接口
     interface IBaseCURD<T> {
        list:Array<T>
        add:(t:T) => T
        getUersId:(id:number) => T
     }

     // 定义一个用户信息的类
     class User {
         id?:number //id代表可有可无
         name:string //用户的姓名
         age:number  //用户的年龄

         constructor(name,age){
             this.name = name;
             this.age = age
         }
     }

     //定义一个类,可以针对用户的信息对象进行增加及查询的操作
     class UserCRUD implements IBaseCURD<User>{
         //用来存多个User类型的用户信息对象
         list:Array<User> =[]

         add(user:User):User {
             user.id =Date.now() +Math.random()
            //将用户信息添加到data中
            this.list.push(user)
             return user
         }
            // 根据id查询用户信息
         getUersId(id:number):User {
             return this.list.find(item => item.id == id)
         }
         
     }

     const userCURD = new UserCRUD();
     userCURD.add(new User('jack',20))
     
     const {id} = userCURD.add(new User('lance',16))

     userCURD.add(new User('tom',18))

     console.log(userCURD.list);

     const user = userCURD.getUersId(id)
     console.log(user);
     
})()

posted @ 2021-04-07 15:32  前端那点事  阅读(860)  评论(0编辑  收藏  举报