欢迎光临散文网 会员登陆 & 注册

TypeScript 高级语法——函数重载

2023-07-24 15:58 作者:没用软件开发日记  | 我要投稿

    函数重载是服务端常用的编程手段,可以用不同的函数签名表达函数在不同情况下的使用方式,与服务端不同的是TS的函数重载多个函数签名要对应同一个函数体,引用官方文档的一个示例:

    在这个例子中演示了函数重载的写法,最难让人理解的可能是最后一个makeDate,其实在TS的函数重载中可以使用的仅仅是像前两个函数那样只存在必传参数的函数,但是为什么还要有第三种形式的粘合剂的存在呢?因为第二种函数签名无法做到兼容第一种。

    在ES规范的范围内其实是不存在函数重载的,函数重载只是TS提供的一种编译期强化能力,也就是上例表达的其实是一个“能接受一个参数或者三个参数的函数”,这是常规JS语法所无法做到的,第三种函数签名出现的意义也仅在给第二种签名一种逻辑能适配第一种签名,让这个函数变得合理(因为不存在既是一个必填参数又是三个必填参数,所以需要一个兼容签名将后两个参数标记为可选)。

    函数重载的意义实际上是在编码层面上明确的告诉使用者该函数有多少种使用方法。对于上例来讲,传入一个参数时意味着传入的是时间戳字符串;传入三个参数时证明传入的是月、日、年数字。这样我们就可以避免像曾经需要去阅读代码逻辑才能知道这个函数的一堆参数应该如何使用。

TypeScript 高级语法——函数重载的评论 (共 条)

分享到微博请遵守国家法律