做珠宝的网站软件推广平台
一、什么是泛型
在定义函数,定义接口或定义class类的时候,不先规定其类型,在使用的时候进行定义类型。
二、使用
1、定义函数:
// 函数类型
function AA<T>(arg:T):T{return arg
}
AA<number>(1)
AA<string>('li')// length的使用
// 方法一
// function fn2<T extends string>(arg:T){
// return arg.length
// }
// fn2<string>('lisi')
// 方法二
interface Is{length:number
}
function fn2<T extends Is>(arg:T){return arg.length
}
fn2<string>('lisi')
console.log(fn2<string>('lisi'),'3333')// 多类型联合声明
function fn3<T,U>(a:T,b:U) {return a
}
fn3<number,string>(1,'lisi')
2、接口泛型
对请求参数和接口返回数据控制类型
interface Ilist{list:{id:number;name:string}[]
}
interface Idata{message:string;ok:number;data:Ilist
}
let data1:Idata = {message:'成功',ok:200,data:{list:[{id:1,name:'张三'},{id:1,name:'张三'}]}
}
3、class泛型
// class泛型
// class Person2{
// useName:string
// useAge:number
// constructor(name,age){
// this.useName = name
// this.useAge = age
// }
// }
// const p = new Person2('张三',3)class Person2<T,U>{useName:TuseAge:Uconstructor(name:T,age:U){this.useName = namethis.useAge = age}
}
const p = new Person2<string,number>('张三',3)