TS学习
泛型
基本使用
//定义一个普通的函数 这样 只能返回一个number类型的数值 如果希望能传入一个任意类型的参数,则可以使用any
function Hello(num:number):number{
return num
}
//但是使用any的话 就失去了校验参数的意义 所以 我们就使用泛型
function Hello1(str:any):any{
return str
}
//泛型的基本写法
function Hello2<T>(arg:T):T{
return arg
}
let output = Hello2<string>("hello") //定义泛型的好处就是 可以在使用的时候去规定传进去的参数 而不是在定义方法的时候规定
alert(output)
泛型的应用
function Hello3<T>(str:T[]):T[]{
return str
}
let list:Array<string> = Hello3<string> (['a','b','c']);
for(let i=0;i<list.length;i++){
alert(list[i])
}
泛型类型
interface Hello4{
<T>(arg:T):T;
}
function myHello<T>(arg:T):T{
return arg;
}
let HM:Hello4 = myHello;
alert(HM<string>('1')) //这样写,就很不方便我们对接口的使用 所以 我们可以在接口中就定义好泛型
更改后的泛型
interface Hello5<T>{
(arg:T):T;
}
function myHello1<T>(arg:T):T{
return arg;
}
let HM1:Hello5<number> = myHello;
alert(HM(100))
泛型类
class HelloNumber<T>{
Ten:T;
add:(x:T,y:T) => T
}
let myHelloNumber = new HelloNumber<string>();
myHelloNumber.Ten = "hello1"
myHelloNumber.add = function(x,y){
return x+y
}
alert(myHelloNumber.Ten)
alert(myHelloNumber.add("hello",myHelloNumber.Ten))