ts:函数的重载

1 主要内容说明

重载函数可以提高类型安全性,内容灵活性和可读性。重载允许同一个函数定义多个参数类型的数量,在编译时检查函数调用的参数是否符合这些重载签名,从而提高类型的安全性。同时还可以灵活的根据不同的参数组合实现不同的逻辑,适用于多种使用场景。如,可以处理正方形、长方形、长方体及多块长方体的体积计算。通过重载,函数名保持一致,使得函数接口更加清晰简洁。使用者可以直接地看到这个函数可以处理哪些不同的参数组合。
举例比较如下

  • 当使用重载时:
function calculateArea(wide: number): number; // 正方形
function calculateArea(wide: number, length: number): number; // 长方形
function calculateArea(wide: number, length: number, height: number): number; // 长方体
function calculateArea(wide: number, length: number, height: number, num: number): number; // 多块长方体
function calculateArea(wide: number, length?: number, height?: number, num?: number): number {
    // 实现...
}

  • 当不使用重载时:
function calculateSquareArea(wide: number): number {
    return wide * wide;
}

function calculateRectangleArea(wide: number, length: number): number {
    return wide * length;
}

function calculateCuboidVolume(wide: number, length: number, height: number): number {
    return wide * length * height;
}

function calculateMultipleCuboidVolume(wide: number, length: number, height: number, num: number): number {
    return wide * length * height * num;
}

通过以上对比,使用重载的函数在处理复杂的参数组合时更加优雅且易于管理,能有效提高代码的可维护性和可读性。

2 例子

2.1 函数的重载

2.1.1 源码1 (函数的重载)

// 函数重载声明
function way1(wide: number): number; // 计算正方形的面积
function way1(wide: number, length: number): number; // 计算长方形的面积
function way1(wide: number, length: number, height: number): number; // 计算长方体的体积
function way1(wide: number, length: number, height: number, num: number): number; // 计算多块长方体的总体积

// 实际函数实现
function way1(wide: number, length?: number, height?: number, num?: number): number {
    // 如果只有宽度,计算正方形的面积
    if (length === undefined && height === undefined && num === undefined) {
        return wide * wide; // 正方形面积
    }
    // 如果只提供宽度和长度,计算长方形的面积
    else if (height === undefined && num === undefined) {
        return wide * length; // 长方形面积
    } 
    // 如果只提供宽度、长度和高度,计算长方体的体积
    else if (num === undefined) {
        return wide * length * height; // 长方体体积
    }
    // 如果提供了所有参数,计算多块长方体的总体积
    else {
        return wide * length * height * num; // 多块长方体的总体积
    }
}

// 测试输出
console.log("正方形面积:" + way1(5)); // 正方形面积
console.log("长方形面积:" + way1(3, 9)); // 长方形面积
console.log("图形体积为:" + way1(2, 5, 6)); // 长方体体积
console.log("图像总体积为:" + way1(5, 3, 10, 5)); // 多块长方体总体积

2.1.2 源码1运行效果

在这里插入图片描述

3.结语

某种情况下,函数重载用得好,也助于我们整理逻辑能力,使得编写的程序不那么繁杂,变得条理有序,且优雅而美观。
由于笔者的能力有限,创作的内容有所不足在所难免,也敬请读者包涵和指出,万分感谢!

4.定位日期

2024-11-2;
20:07;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值