TypeScript之函数定义(三)

本文详细介绍了TypeScript中函数的定义、可选参数、默认参数、剩余参数以及函数重载的概念和用法。通过示例展示了如何在TS中创建函数,包括如何处理不同数量和类型的参数,以及如何实现函数的多种功能定义(函数重载)。
摘要由CSDN通过智能技术生成


TS中的函数语法和JS(es5和es6的函数)的语法类似,多了TS的类型特性和规范,通过类型判断实现函数重载。

上一篇 TypeScript之interface定义对象(二)

一.函数的定义

//1 函数的定义
 
//es6函数声明
f1(){
  console.log("hello world");
}
f1();//调用函数
 
//ts中定义函数  函数名(参数1:类型1,参数2:类型2,...) :返回值类型
//定义一个没有参数没有返回值的函数
f2():void{  
	console.log("hello world");
}
f2();//调用函数
//定义一个含参数和返回值的函数
f3(num:number):number{
    //return 类型必须为number
    return num;
}
console.log(f3(100));//调用函数  100

二.可选参数

JS里面方法的实参和形参数量可以不一样(定义了参数可以不传),但是TS中实参和形参必须一样(定义声明传什么),如果需要省略参数就要定义可选参数。

//注意:可选参数必须定义在最后 再参数名后面加 ?
studentInfo(name:string,age?:number):string{
         if(age){
             return "名字是:"+name +",年龄是:"+age;
         }else{
             return "名字是:"+name +",年龄保密";
         }
 }
console.log((studentInfo('狗蛋')));  //不传age参数
console.log((studentInfo('狗蛋', 18)));

三.默认参数

es5的函数不能设置默认参数,es6和TS中函数都可以设置默认参数

//默认参数也是定义到最后 设置默认参数age值为18
  studentInfo(name:string,age:number=18):string{
                  return "名字是:"+name +",年龄是:"+age;
  }
 
console.log( studentInfo('狗蛋')); // 不传年龄 默认年龄为18

四.剩余参数

使用扩展运算符(…)接收新传递的参数,此参数是一个数组,使用…展开。

// ...rest 接收函数传入其他的所有参数,rest也参数只能放在函数形参最后。
//定义一个函数计算传入数值的总和
sum(a:number,b:number,...rest:number[]):number{
    let sum=a+b;
    for(const item of rest ){
    	sum+= item
    }
    return sum;
}
//1,2是对应参数a,b。剩余的参数4,5,6,被存在了rest数组参数里传入函数
console.log(sum(1,2,3,4,5,6)) ;//21

五.函数重载

TS函数的重载:通过为同一个函数提供多个函数类型定义来实现不同的功能。

1.先声明
2.用any实现方法(通过判断)

//JS中若出现同名函数,后声明的会覆盖之前的(之前的函数失效)


//1.声明 TS中声明两个同名函数reloadTest,但函数接收的参数分别为string和number类型
reloadTest(str:string):string;
reloadTest(num:number):string;
 
//2.实现 reloadTest函数的实现(参数和返回值类型为any)
reloadTest(a:any):any{
	//通过传入的参数来判断执行的方法
    if(typeof a === 'string'){
        return '我传入的是一个字符串'
    }else{
        return '我传入的是一个数字'
    }
}
 
 console.log(reloadTest('哈哈哈'));   //正确执行
 console.log(reloadTest(88));   //正确执行
// console.log(reloadTest(true));    //编译报错(因为未声明布尔类型参数)

下一篇 TypeScript之类,抽象类,继承,多态(四)

没有咯。。。。。。。。。。。。。。。。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值