既有类型检查,有有任意类型
function getDatas<T>(msg:T){console.log(msg);}getDatas<string>('hello')getDatas<number>(1)
约束泛型
function echoWithArr<T>(arg:T []){console.log(arg);}echoWithArr<string>(['httl'])echoWithArr<number>([1])
1.使用接口对泛型进行了扩展
interface len{length:number}function getLength<T extends len>(arg:T){console.log(arg.length);}getLength<string>('dadasd')getLength({length:10})getLength<Array<number>>([1,2,3])
2.泛型类
class Numlist<T>{public list:Array<T>=[];add(val:T){this.list.push(val)}}var nums=new Numlist<number>();nums.add(123)console.log(nums);var strs=new Numlist<string>();strs.add('sadadsa')console.log(strs);
3.泛型对象接口
//对象类型接口interface attrs<T,U>{name:T,age:U}//在声明变量的时候指明类型var obj:attrs<string,number>={name:'lisi',age:12}
