脚本宝典收集整理的这篇文章主要介绍了4. ts. 函数相关,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
函数
1. 函数声明
- 函数声明 (Function Declaration)
function add(x:number, y:number):number{
return x + y
}
- 函数表达式 (Function ExPression)
let add = function(x:number, y:number):number{
return x + y
}
// 这种定义方式只定义了匿名函数的传参要求,并没有给 add 的参数添加定义,但是这种方式也可以通过编译,由右侧推导出左侧参数定义
let add(x:number, y:number) => number = function(x:number, y:number):number{
return x + y
}
// => 表示函数的定义,左边为输入类型(需要用括号扩起来),右边为输出类型
无论是那种函数定义方式,在传参数时都不能少或者多,如果有可传可不传的参数,请看 可选参数 。
2. 接口定义函数
interface IoFuc{
(x:string, y:string):number
}
let getLoc:IoFuc
getLoc = function(x: string, y: string): number {
return x.indexOf(y)
}
3. 可选参数
用 ? 表示可选参数
function buildName(FirstName:string, lastName?:string):string{
if(lastName) {
return firstName + lastName
} else {
return firstName
}
}
可选参数必须在必选参数后面
4. 参数默认值
ts 会将有默认值的参数识别为可选参数,此时它可以在必选参数前面,此时传值是需要的,若在必选参数后面可以不用传值,具体如下:
function buildName(firstName:string, lastName:string = 'tom'):string{
return firstName + lastName
}
buildName('Li')
function buildName(lastName:string = 'tom', firstName:string):string{
return firstName + lastName
}
buildName(undefined, 'Wang')
5. 剩余参数
function indexs(a, ...rest) {
console.LOG(rest)
}
indexs(1, 2, 4, 5)
// 2 4 5
function push(array:any[], ...rest:any[]):any[] {
rest.foreach(item => {
array.push(item)
})
}
let arr:any[] = []
push(arr, 1, 2, 3, 'd', 'e', 5)
// arr [1, 2, 3, 'd', 'e', 5]
6. 重载
重载允许一个函数接受不同数量或类型的参数是做出不同的处理。
// 实现将一个字符串或数字进行反转的方法
// 为了更精准的表达,输入的是字符串,输出也应该是字符串,数字同理,所以可以重载定义多个reverseFnc的函数类型
function reverseFnc(x:number):number;
function reverseFnc(x:string):string;
function reverseFnc(x:number|string):number|string{
if(tyPEof x === 'string') {
return x.split('').reverse().join('')
} else if(typeof x === 'number') {
return Number(x.toString().split('').reverse().join(''))
}
}
在上述例子中,多次重复定义了reverseFnc函数,前几次属于函数的定义,最后一次属于函数的实现。
typescript会优先从最前面的函数定义开始匹配,多个函数如果有包含关系,则应该将更精准的定义写在前面!
以上是脚本宝典为你收集整理的4. ts. 函数相关全部内容,希望文章能够帮你解决4. ts. 函数相关所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。