Typescript之函数的定义

在typescript中,需要对函数的输入和输出都考虑进行约束

1、函数声明方式

 function sum(x:number=12,y?:number):number{
      return x+y
    }
  1. 在形参中对输入的参数进行了约束,必须指定类型,不确定的参数类型使用any
  2. 在括号之后对输出进行了约束。对输出可以不指定类型。
  3. 如果指定了输出类型,输出值的类型与定义的输出类型不一致就会报错
  4. 输入多余的(或者少于要求的)参数会报错

1、可选参数

y?:number中的?号,表示y参数是一个可选参数
可选参数必须接在必选参数的后面

2、默认参数

y=12表示y的默认参数是12,当没有传y时使用12这个值。此时y由类型推断为number,不用定义y的类型,或者定义y的类型为any

3、剩余参数

function mySum(...args:number[]):number{
      let sum=0;
      for(let i=0;i<args.length;i++){
        sum+=args[i]
      }
      return sum
    }
  1. 使用…rest运算符定义形参
  2. 使用:number[]定义args的类型
    剩余参数是放在函数声明的时候所有参数的最后。

2、函数表达式方式

let mySum=(x:number,y:number):number=>{
      return x+y
    }

上面表达式等号的右边,函数部分进行了类型定义
等号的左边,函数的接收变量mySum没有进行类型定义,它的类型是通过这个表达式的赋值操作进行类型推断而来的。
在定义mySum时,也可以给它添加类型定义。

let mySum:(x:number,y:number)=>number=(x:number,y:number):number=>{
      return x+y
    }

(x:number,y:number)=>number就是mySum这个变量的类型。

3、用接口定义函数

定义接口

interface MySum{
      (x:number,y:number):number
    }

使用接口定义函数

let mySum:MySum=function(x:number,y:number):number{
      return x+y
    }

或者

let mySum:MySum=function(x,y){
      return x+y
    }

4、函数重载

重载函数声明

function add (x: string, y: string): string
function add (x: number, y: number): number

// 定义函数实现
function add(x: string | number, y: string | number): string | number {
  // 在实现上我们要注意严格判断两个参数的类型是否相等,而不能简单的写一个 x + y
  if (typeof x === 'string' && typeof y === 'string') {
    return x + y
  } else if (typeof x === 'number' && typeof y === 'number') {
    return x + y
  }
}

add方法只能同时传入两个字符串,或者同时传入两个数字。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值