老师,关于函数重载这里不太明白

老师,关于函数重载这里不太明白

相关代码:

function result6(a: number): string;
function result6(a: number, b: number): string;

function result6(
    a: number,
    b?: number
) {
    if (b !== undefined) {
        return (a + b).toString()
    } else {
        return a
    }
}

result6(100)
result6(100, 200)

问题描述:

https://img1.sycdn.imooc.com//climg/617ff1af09521a9104870104.jpg

为什么这里直接返回数字类型没有报错


相关代码:

function result6(a: number): string;
function result6(a: number, b: number): string;

function result6(
    a: number,
    b?: number
) {
    if (b !== undefined) {
        return '123'
    } else {
        return a
    }
}

result6(100)
result6(100, 200)

问题描述:

https://img1.sycdn.imooc.com//climg/617ff1f309f9048004360096.jpg

这里把返回值是一个跟ab无关的普通字符串又为啥报错了

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,解答如下:

同学粘贴的这段代码中,函数重载是没有意义的,如果只是传入的参数不同,而函数的返回值类型相同,那么就不需要使用函数重载,可以使用可选参数来代替函数重载的定义,此时才会与预期结果一致,如图

https://img1.sycdn.imooc.com//climg/6180bb970978292b07160441.jpg

祝学习愉快!

  • __Promise 提问者 #1

    老师,可以理解为函数重载是为了解决根据不同的参数返回不同类型的数据,

    如果返回类型一样就没必要使用重载,而且也无法实现预期效果是吗?

    2021-11-02 12:23:56
  • 好帮手慕然然 回复 提问者 __Promise #2

    同学你好,是的,可以这样理解,祝学习愉快!

    2021-11-02 13:03:21
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师