回顾JavaScript中的函数定义:
/*普通函数*/
function add(a, b) {
console.log(a + b);
}
add(1, 2);
/*匿名函数*/
var add1 = function (a, b) {
console.log(a + b);
};
add1(3, 4);
Typescript:函数定义
/*普通函数*/
function add(a:number,b:number):number{
return a+b;
}
add(1,2);
/*匿名函数*/
var add1=function (a:number,b:number):number {
return a+b;
}
add1(3,4);
在Typescript 中必需给函数指定类型,这样在编译阶段会规避很多错误.函数类型分为参数类型和返回值类型。
1.参数
参数类型直接在参数后指定,TypeScript里的每个函数参数都是必须的,即实参和形参的个数和类型必须一致,也就是说我们在函数中定义了几个参数在调用的时候就要传几个参数。而在javaScript中,参数是可传可不传的,如果不传,默认是undefined。
(1)可选参数:TpeScript中在参数名后加上 ?意为参数可传可不传(b?:number),如果不传,默认就是undefined。可选参数必须配置在必须传入参数的后面。
(2)默认参数:当用户没有传递这个参数或传递的值是undefined时,使用该值。(b:number=20)
(3)剩余参数:不知道到底有多少个参数传进来,这时候就可用剩余参数,可以传多个,也可以什么都不传。将传入的参 数赋值给数组。
function add(...str:string[]){
console.log(str.join("|"));
}
function add2(a:number,b:number,...num:number[]){
//操作
}
add2(1,2,3,4,5,6);//a=1,b=2,num=[3,4,5,6]
2.返回值
返回值类型则在该函数后面指定,如果函数没有返回任何值,则指定返回值类型为 void而不能留空。 TypeScript能够根据返回语句自动推断出返回值类型。
3.函数重载
实现类似于Java等面向对象语言的写法。同时为了兼容es5和es6,会和Java写法不同。
在es5中,出现同名方法,最后定义的函数会覆盖前面定义的函数。
function getInfo(name:string):string
function getInfo(name:string,age:number):number
function getInfo(name:any,age?:any):any{
if(typeof name==='string'){
return"字符串";
}else{
return"其他";
}
}
getInfo(true);//错误,没有找到对应的重载方法
版权声明:本文为u014527697原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。