前言:
在 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))