Typescript--函数方法

函数的定义方式

函数的定义方式有俩种,即function定义方式和匿名函数方式,但是要求指定返回值类型。

1
2
3
4
5
6
function fun1 ():number {
return 123
}
function fun2 ():void {
console.log('hello world')
}

function方式定义的的函数,并且要求返回值是一个数字。

1
2
3
4
5
6
let fun3 = function ():string {
return 'hello world'
}
let fun4 = function ():void {
console.log('hello world')
}
typescript中的传参方式
  • ts中的参数需要指定参数的类型

    1
    2
    3
    function fun (a:number):number {
    return a
    }

    要求传入的参数a是一个number类型,并且该函数返回一个number类型的返回值。

  • ts中可以用?来表示某个参数是可选参数,但是必须要放到所有参数的最后面

    1
    2
    3
    function fun (name:string, age?:number):string {
    return `我是${name},我的年龄是${age}`
    }

    我门可以看到,其中参数age为可选参数,可以不传。

  • ts中的默认参数

    1
    2
    3
    4
    5
    6
    7
    function fun (name:string, age?:number = 30): string {
    return `我叫${name},我今年${age}岁`
    }
    console.log(fun('章三'))
    // 我叫章三,我今年30岁
    console.log(fun('李四', 90))
    // 我叫李四,问今年90岁
  • ts中剩余参数,剩余参数可以用拓展符...来表示

    1
    2
    3
    4
    function fun (a:number, b:number, c:number, d:number, e:number):number {
    return a + b + c + d + e
    }
    console.log(fun(1,2,3,4,5)) // 15

    这样的参数会很繁琐。那么我们来用…缩减一下参数。

    1
    2
    3
    4
    5
    6
    7
    8
    function fun (...res:number[]):number {
    let sum = 0
    for (let i = 0;i < res.length - 1;i++) {
    sum += res[i]
    }
    return sum
    }
    console.log(fun(1,2,3,4,5)) // 15
    函数的重载

    为同一个函数提供多个函数类型定义来进行函数重载。多个函数函数名相同,函数的参数类型,顺序,个数不同。注意函数重载与返回值类型无关。ts的函数重载比较鸡肋,最终函数逻辑的实现还是在一个函数体内去判断它的参数类型,然后做相应的操作。ts重载的作用,感觉只是多了一个参数校验的功能。也就是说在进行函数调用的时候,会对参数进行检查,只有传入的参数类型,顺序,个数与定义的重载函数的参数相同,才能调用成功,否则报错。返回值类型不会进行校验(函数重载与返回值类型无关)。

1
2
3
4
5
6
7
8
9
10
11
12
function getUser (name:string):string {}
function getUser (age:number):number {}
function getUser (str:string):any {
if (typeof str === 'string') {
return `我叫${str}`
} else {
return `我的年龄是${str}`
}
}
console.log(getUser('张三')) // 我叫张三
console.log(getUser(30)) // 我的年龄是30
console.log(getUser(true)) // 报错
箭头函数

箭头函数和js中一样,但是需要注意的this的指向问题。

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2022 Lee
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信