TypeScript-(函数)

函数的定义

声明式

ts在传参时都会规定参数的类型,还有它返回值的类型也会在函数执行之前都已经规定好,如果传参的类型和返回值的类型不符合,ts编译会报错。

function getInfo(name: string, age: number) : string {
    return `I am ${name} and I am ${age} years old`
}

匿名函数

const getInfo = function(name: string, age: number):string {
    return `I am ${name} and I am ${age} years old`
}

函数中的参数

默认参数

传入值会覆盖默认参数,不传值也行

function getinfo(name:string,age:number=20):string{
    return `${name}---${age}`
}
console.log(getinfo("张三"));//打印出:张三 20
console.log(getinfo("张三",30));//打印出:张三 30

可选参数

可以传可选的值也可以不用传,但是可选的参数必须放在参数列表的最后

function getinfo1(name:string,age?:number):string{
    if(age){
        return `${name}---${age}`  
    }else{
        return `${name}---年龄保密`
    } 
}
console.log(getinfo1("张三"));//打印出:张三 年龄保密
console.log(getinfo1("张三",30));//打印出:张三 30

剩余参数

利用es6的三点运算符(相当于把参数赋值给一个数组,然后用循环遍历这个数组)

function sum1(...result:number[]):number{
    var sum=0;
    for(let i=0;i<result.length;i++){
        sum+=result[i];
    }
    return sum;
}
console.log(sum1(1,2,3,4,5));//15
console.log(sum1(1,2,3,4,5,6));//21

把传进来的第一个参数赋值给a,后面的放进数组

function sum1(a:number,...result:number[]):number{
    var sum=a;
    for(let i=0;i<result.length;i++){
        sum+=result[i];
    }
    return sum;
}
console.log(sum1(1,2,3,4,5));//15
console.log(sum1(1,2,3,4,5,6));//21

函数的返回值

没有返回值的函数

当函数不需要return返回数据时,这个函数的返回类型就为void(空)

function getInfo(name:string, age:number):void{
    console.log(`hello${name}`)
}

推断类型

ts会自动识别出返回类型为number(ts自动识别类型(按上下文归类))

function add(x: number, y: number) {
    return x + y
}

函数的调用

ts的函数调用和普通的函数没有区别,可以在函数名后面加括号调用,也可以用call,apply,bind来调用。

call() 方法可用于调用函数,第一个参数必须是对象本身。第二个参数call则作为call的参数传入(从第二个参数开始)

function myFunction(a, b) {
    return a * b;
}
 let obj = myFunction.call(obj, 10, 2);     // 返回 20
 console.log(obj)

apply()方法可用于调用函数,第一个参数必须是对象本身。第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入。

function myFunction(a, b) {
    return a * b;
}
myArray = [10, 2];
myObject = myFunction.apply(myObject, myArray);  // 返回 20

函数的重载

使用相同名称和不同参数数量或类型实现不同的功能。

function add07(...rest: number[]): number;
function add07(...rest: string[]): string;
function add07(...rest: any): any {
  let first = rest[0];
  if (typeof first === "string") {
    return rest.join("");
  } else if (typeof first === "number") {
    return rest.reduce((pre: number, cur: number) => pre + cur);
  }
}

console.log(add07(1, 2, 3, 4));
console.log(add07("1", "2", "3", "4"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力做一只合格的前端攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值