4. ts. 函数相关

发布时间:2019-08-14 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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. 剩余参数

  • es6...rest 获取函数的剩余参数,如下:
function indexs(a, ...rest) {
    console.LOG(rest)
}
indexs(1, 2, 4, 5)
// 2 4 5

4. ts. 函数相关

  • 上面例子中可知,rest是一个数组,我们可以用数组类型来定义它。 rest参数一定是截止到最后一个参数!
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]

4. ts. 函数相关

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,请注明来意。