当前位置: 首页 > news >正文

【TS】函数重载的作用

前言

当调用一个函数时,通常会提示有多种调用方式,各种调用方式的参数类型、参数数量、返回值等均可能不同。本文通过自己封装的message作为案例模拟一下。

在这里插入图片描述

实现

自己封装的message组件,有以下7种调用方式

message({mode: "mode",text: "text",onClose: function () {console.log("close")},duration: 3000,
})
message("text")
message("text", function () {})
message("text", "mode")
message("text", "mode", 3000)
message("text", 3000)
message("text", 3000, function () {})

根据这7种调用方式,总结参数类型如下:

function message(param1: string | object,param2?: string | number | Function,param3?: number | Function
) {}

但是使用时,提示过于混乱

在这里插入图片描述

声明多个函数签名,每个函数签名反应不同的调用方式,这便是函数重载

在这里插入图片描述

message({mode: "mode",text: "text",onClose: function () {console.log("close")},duration: 3000,
})
message("text")
message("text", function () {})
message("text", "mode")
message("text", "mode", 3000)
message("text", 3000)
message("text", 3000, function () {})function message(options: object): void
function message(text: string, onClose?: Function): void
function message(text: string, mode: string, duration?: number): void
function message(text: string, duration: number, onClose?: Function): voidfunction message(param1: string | object,param2?: string | number | Function,param3?: number | Function
) {}

注意:由于有了函数重载,ts则不会根据函数的实现签名判定,只会使用重载判定。

在这里插入图片描述

如果这是一个方法,即存在于对象内部,同样适用。

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 超简单亿图图示安装教程/快速入门指南及快捷键大全
  • C++拾趣——使用VSCode跨平台调试CMake编译的C/C++项目
  • 微信小程序实例代码解读
  • 数据结构--图(笔记)
  • 滑块缺口研究实例(C#颜色滑块缺口计算)
  • 【STM32 Blue Pill编程】-读取数字引脚输入
  • 回顾前面刷过的算法(6)
  • web前端之vue+element+select实现多选、两个数组排序、保持源数据、查找索引、过滤、克隆、复制、findIndex、filter
  • ansible搭建+ansible常用模块
  • Python - sqlparse 解析库的基础使用
  • Spring Boot 集成 Elasticsearch 时,是使用 Java API 还是原生的 Elasticsearch API?
  • 2024 Testing Expo即将开幕,怿星科技展品大剧透!
  • .Net插件开发开源框架
  • Win 11用户全面中招,微软强制更新致性能下降45%
  • AtCoder Beginner Contest 367(ABCDEF题)视频讲解
  • HomeBrew常规使用教程
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Java到底能干嘛?
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • node和express搭建代理服务器(源码)
  • Transformer-XL: Unleashing the Potential of Attention Models
  • Vue实战(四)登录/注册页的实现
  • vue数据传递--我有特殊的实现技巧
  • 阿里云购买磁盘后挂载
  • 从PHP迁移至Golang - 基础篇
  • 从tcpdump抓包看TCP/IP协议
  • 大数据与云计算学习:数据分析(二)
  • 构建二叉树进行数值数组的去重及优化
  • 构建工具 - 收藏集 - 掘金
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 事件委托的小应用
  • Java性能优化之JVM GC(垃圾回收机制)
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​​​【收录 Hello 算法】9.4 小结
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • # 达梦数据库知识点
  • ###项目技术发展史
  • #QT(智能家居界面-界面切换)
  • #知识分享#笔记#学习方法
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (c语言)strcpy函数用法
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (接口自动化)Python3操作MySQL数据库
  • (七)Activiti-modeler中文支持
  • (四)c52学习之旅-流水LED灯
  • (转)Unity3DUnity3D在android下调试
  • (轉貼) UML中文FAQ (OO) (UML)
  • .net framework 4.8 开发windows系统服务
  • .NET 表达式计算:Expression Evaluator
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • @ohos.systemParameterEnhance系统参数接口调用:控制设备硬件(执行shell命令方式)