泛型接口
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);
})()