ts 函数声明及泛型函数
生活随笔
收集整理的这篇文章主要介绍了
ts 函数声明及泛型函数
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
函数声明
函数声明对参数类型, 返回值类型定义,没有返回值定义为void
//必传x,y并且类型都为number,返回值为布尔 function fun1(x:number,y:number):boolean{return x>y } fun1(1,3)没有返回值定义为void:
//不返回值,类型为void function fun1(x:number,y:number):void{console.log(x,y) }参数可传可不传 并添加默认值:
//x必传,y为可传可不传 默认值为1; 返回值为数组类型,数组的每个值为number function fun1(x:number,y:number=1):number[]{return [x,y] } fun1(2) //报错,返回的x.length一定是定义的所有类型计划都满足有length方法的,但是number没有length。 function fun1(x:string|number):number{return x.length }泛型函数
软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。
可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。 这样用户就可以以自己的数据类型来使用组件。
-
泛型是指在定义函数,接口,类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。
-
泛型<T> T类型变量,表示任何类型。帮助我们捕获用户传入的类型(比如:number)
-
传入泛型用 <number>,尖括号括起来的
-
创建泛型函数时,编译器要求你在函数体必须正确的使用这个通用的类型
创建泛型函数时,编译器要求你在函数体必须正确的使用这个通用的类型:
//报错 因为T类型变量代表的是任意类型,所以使用这个函数的人可能传入的是个数字,而数字是没有 .length属性的。 function fun5<T>(x: T): T {return x.length; }可传入多个类型变量:
function fun1<T, W>(x: T,y:W): W {return y } fun1<string, boolean>('1',false)泛型约束
泛型约束可以通过(interface)接口+extends来实现约束。
interface Len{length: number } //T继承接口Len,代表实参必须有length这个属性才可以 funtion fun<T extends Len>(args:T):T{return args.length } fun("abc") // 3 字符串是有length属性的 fun({})//报错,因为对象本身没有length属性 fun({length:5}) //不报错 fun(4)//报错,number数据没有length属性 fun(null)//报错总结
以上是生活随笔为你收集整理的ts 函数声明及泛型函数的全部内容,希望文章能够帮你解决所遇到的问题。