typeScript中的函数

前言:在ts中对于函数的定义其实与在js中的几乎是一模一样的,无非是要指定返回的数据类型,和要传递的参数类型。

一.函数的定义

1.有返回值的函数:在ts中需要指定返回值的数据类型

		// js中的定义
		function run(){
			return 123
		}
		run()
		
		// ts中的定义
		function run1():number{
			return 123
		}
		run1()

2.需要传参的函数:在ts中函数传参需要指明参数的数据类型

		function getInfo(name:string,age:number):string{
		    return `${name}-----${age}`;
		}
		
		console.log(getInfo("ME",18))//ME-----18

3.没有返回值的函数:需要指明该函数没有返回值

		 function run():void{
			console.log("没有返回值")
		 }

二.可选参数:在一个参数后面加?,指定一个参数可传可不传,如果不加?,该参数为必传项。(注意:可选参数,一定要写在,必传参数的后面,不能把可选参数写在前面)

		function getInfo(name:string,age?:number):string{
		    if(age){
		        return `${name}-----${age}`;
		    }else{
		        return `${name}-----年龄保密`;
		    }
		}
		
		console.log(getInfo("ME"));//ME-----年龄保密
		console.log(getInfo("ME",18));//ME-----18

三.默认参数:给参数设置默认值,在不传该参数的情况下,就以默认值为准(默认参数不用考虑参数的顺序)

		function getInfo(name:string,age:number=20):string{
		    if(age){
		        return `${name}-----${age}`;
		    }else{
		        return `${name}-----年龄保密`;
		    }
		}
		console.log(getInfo("ME"));//ME-----20
		console.log(getInfo("ME",18));//ME-----18

四,剩余参数:就是再不确定所要传的参数有几个时,用es6的三点运算符来接收参数。

		//方法一 (所有的参数都由三点运算符代替)
		function sum(...result:number[]):number{
		    var sum=0;
		    for(var i=0;i<result.length;i++){
		        sum+=result[i];
		    }
		    return sum
		}
		console.log(sum(1,2,3)) //6
		console.log(sum(1,2,3,4)) //10

		//方法二 (后面的部分参数由三点运算符代替)
		function sum(a:number,b:number,...result:number[]):number{
		    var sum=a+b;
		    for(var i=0;i<result.length;i++){
		        sum+=result[i];
		    }
		    return sum
		}
		console.log(sum(1,2,3)) //6  1,2,这两个参数分别为a,b 3由三点运算符代替
		console.log(sum(1,2,3,4)) //10  1,2,这两个参数分别为a,b 3,4由三点运算符代替
		

五.函数重载:java中方法的重载,重载指的是两个或者两个以上同名函数,但他们的参数不一样,这时会出现函数重载的情况。typeScript中的重载,通过为同一个函数提供多个函数类型定义来试下多种功能的目的。

在js中函数方法的重名,下面的方法会替换上面的方法,而在ts中支持方法的重载。

		function getInfo(name:string):string;
		function getInfo(age:number):number;
		function getInfo(str:any):any{
			if(typeof str==="string"){
				return '我叫:'+str;
			}else{
				return '我的年龄是:'+str;
			}
		}
		console.log(getInfo('ME')); //我叫:ME
		console.log(getInfo(18));  //我的年龄是:18
		console.log(getInfo(true));//错误写法,因为函数重载中不包含boolean数据类型


		function getInfo(name:string):string;
		function getInfo(name:string,age:number):string;
		function getInfo(name:any,age?:any):any{
			if(age){
				return '我叫:'+name+'我的年龄是'+age;
			}else{
				return '我叫:'+name;
			}
		}
		console.log(getInfo('ME'));//我叫:ME
		console.log(getInfo("ME",18));//我叫:ME我的年龄是18

六.箭头函数:箭头函数提供了一种更加简洁的函数书写方式

		setTimeout(function(){
		    console.log("我是普通函数")
		},1000)
		//去掉function关键字,在()后面添加等号和右尖括号
		setTimeout(()=>{
		    console.log("我是箭头函数")
		},2000)
谢谢大家,有不明白的地方随时留言联系!!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值