typescript的重载


重载的优势

优势1: 结构分明

让 代码可读性,可维护性提升许多,而且代码更漂亮。

优势2: 各司其职,自动提示方法和属性:
每个重载签名函数完成各自功能,输出取值时不用强制转换就能出现自动提示,从而提高开发效率

优势3: 更利于功能扩展

方法的重载

remove(value: number): number
remove(value: object): object
remove(value: number | object): number | object {
    this.element = this.element.filter((ele, index) => {
     
      if (typeof value === "number") {
        return value !== index
      } else {
        return value !== ele
      }
    })
    return value;
  }

也可以写成

remove(value: number): number
remove(value: object): object
remove(value: any): any {
    this.element = this.element.filter((ele, index) => {
     
      if (typeof value === "number") {
        return value !== index
      } else {
        return value !== ele
      }
    })
    return value;
  }

构造器的重载

写法与方法重载一样

constructor(width?:number,height?:number)
constructor(side?:OJType)
constructor(v1:any,v2?:any){
        if(typeof v1==='object'){
            this.width=v1.width;
            this.height=v1.height
        }else{
            this.width=v1;
            this.height=v2;
        }
    }

重载与普通函数的用法区别

方法有不同个数的参数用重载

function func (a: number): number
function func (a: number, b: number): number

方法的参数是不同类型的用函数

function func (a: number): number
function func (a: string): number
//我们使用以下方式进行替代
function func (a: number | string): number

方法的返回值不同的用重载

function test(a: number, b: string): void;
function test(a: number, b: string): number | void{
    if (typeof b !== 'undefined') {
        console.log(b)    
    } else {
        return a+1
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值