TypeScript 中函数 ?

前言:


在 TS 中,做了严格类型定义,不止在声明变量,常量时。同样在 TS 中声明函数 时,也要注意类型的定义。主要 注意 的两点,一是 参数类型 ,二是 返回值类型 

  • ES5 中定义函数的方法 ?

在 ES5 中,我们定义函数的方法通常为 函数声明法 和 匿名函数法 

// 函数声明法
function fun1ES5(){
    console.log('函数调用')
}
fun1ES5()

// 匿名函数法
var fun2ES5 = function(){
    return 1314
}
console.log(fun2ES5())
  • TS 中定义函数的方式 ?

在 TS 中,我们定义函数的方法也分为 函数声明法 和 匿名函数法 ,需要注意的是 参数和函数返回值的类型 

// 函数声明法(定义没有返回值的函数)
function fun1TS():void{
    console.log('函数调用。。。')
}
fun1TS()

// 匿名函数
let fun2TS = function():number{
    return 12;
}
console.log(fun2TS())
  • TS 中函数传参 ?

在 TS 中定义函数时传参,和 ES5 中区别在于,要指定每个 参数的类型 

function getInfoTS(name:string,age:number):string{
    return `姓名:${name},年龄:${age}`
}
console.log(getInfoTS('王倩',19))

let getInfo1TS = function (name:string,age:number):string{
    return `姓名:${name},年龄:${age}`
}
console.log(getInfo1TS('周霞',29))
  •  TS 中函数可选参数 ?

注意:可选参数必须配置到参数的后面。

function getInfo3TS(name:string,age?:number):string{
   return age ? `姓名:${name},年龄:${age}` : `姓名:${name},年龄:未知`
}
console.log( getInfo3TS('wuhao',24))
console.log( getInfo3TS('lijun'))
  • TS 中函数默认参数 ?

注意:在 ES6 和 TS 中函数有默认参数,但在 ES5 中则没有。

function getInfo4TS(name:string,age:number=20):string{
    return age ? `姓名:${name},年龄:${age}` : `姓名:${name},年龄:未知`
 }
 console.log( getInfo4TS('lijun'))
 console.log( getInfo4TS('wuhao',24))
  • TS 中函数剩余参数 ?

可以通过 展开运算符 ,....result:number[] 来接收函数参数数组。

 // TS 中剩余参数
function sumTS(a:number,b:number,c:number,d:number):string{
    let num:number = a+b+c+d
    return `num:${num}`
 }
 console.log(sumTS(1,2,3,4))

 // 三点运算符接受形参传过来的值
 function sum1TS(...result:number[]):string{
    let num:number = 0
    result.forEach((item) => {
        num += item
    })
    return `num:${num}`
 }
 console.log(sum1TS(1,2,3,4,5,6))

 function sum2TS(a:number,...result:number[]):string{
    let num:number = a
    result.forEach((item) => {
        num += item
    })
    return `num:${num}`
 }
 console.log(sum2TS(1,2,3,4,5,6))
  • TS 中函数重载 ?

TS 中函数的重载,通过 为同一个函数提供多个函数类型定义来达到多种功能 的目的。

 function getInfoNewTS(name:string):string
 function getInfoNewTS(age:number):string
 function getInfoNewTS(str:any):any{
    return typeof (str === 'string') ? ('姓名'+str) : ('年龄'+str)
 }
 console.log(getInfoNewTS('wuhao'))
 console.log(getInfoNewTS(24))

 function getInfoNew1TS(name:string):string
 function getInfoNew1TS(name:string,age:number):string
 function getInfoNew1TS(name:any,age?:any):any{
    return age  ? ('姓名'+name+',年龄'+age) : ('姓名'+name)
 }
 console.log(getInfoNew1TS('wuhao'))
 console.log(getInfoNew1TS('lijun',24))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值