首页 > 其他分享 >通过重载签名来实现泛型不易实现的写法

通过重载签名来实现泛型不易实现的写法

时间:2023-08-27 17:11:06浏览次数:31  
标签:function string 实现 number 重载 add 泛型 写法 any

问题:实现一个TS方法,多个字符转或者多个数字相加

首先会想到用泛型实现 例如

let sum = <T>(a: T, b: T): T => a + b

 

但是这样会报 “运算符+不可用于类型T” 接下来我们可能会想到给类型T加上限制
type SunType = string | number;
let sum = <T extends SunType>(a: T, b: T): T => a + b

 

还是会继续报错 “运算符+不可用于类型T”   这个时候可能因为无法知道+号使用的类型,否者可以为 类型T加上相应的限制,除了加上限制还可以通过重载签名来实现  
  function add(x: string, y: string): string;
  function add(x: number, y: number): number;
  function add(x: any, y: any): any {
      return x + y;
  }

 

标签:function,string,实现,number,重载,add,泛型,写法,any
From: https://www.cnblogs.com/ehuanrum/p/17660503.html

相关文章

  • 类和对象(运算符重载)
    运算符重载概念:对已有的运算符重现定义,赋予其另一种功能,以适应不同的数据类型。对于内置类型,编译器知道如何进行运算。运算符重载也可以发生函数重载1.加号运算符重载作用:实现两个自定义数据类型相加的运算。1.成员函数重载+号classperson{public: //1.成员函数重载+号 person......
  • Java中的泛型概念
    在Java中,泛型是一种强类型检查机制,它允许我们在编译时期指定类、接口或方法的参数和返回值类型。使用泛型可以实现代码的重用性、类型安全性和提高代码的可读性。下面是关于Java泛型的一些重要概念和用法:泛型类(GenericClass):通过在类名后面使用尖括号<T>来声明一个泛型类,在类......
  • 记一次提升性能的写法和技巧
    1.使用异步编程:使用异步方法可以提高应用程序的响应性能,特别是在处理I/O密集型操作时。通过使用async和await关键字,可以将长时间运行的操作放在后台线程上,从而释放主线程并提高应用程序的吞吐量, Channel通道,进程内队列(Queue)。2.使用内存池:在.NETCore中,可以使用MemoryPo......
  • Python教程:方法重载
    方法重载在Python中起着关键作用。方法有时接受零参数,有时接受一个或多个参数。当我们以不同的方式调用同一个方法时,这就被称为方法重载。Python不像其他语言那样默认支持重载方法。在Python中,两个或多个方法不能有相同的名字,因为方法重载允许我们使同一个操作符具有不同的含义......
  • element-ui中表格@row-click方法自定义传参的写法
     @row-click="(row,column,e)=>handleRowClicked(row,column,e,'unitName')"参考:https://blog.csdn.net/weixin_46060121/article/details/120151005   ......
  • 数据变更事件,泛型类,体会其中思想
    数据变更事件namespaceFeng.FramWorkDesign{publicclassBindableProperty<T>whereT:IEquatable<T>{privateTmValue=default(T);publicTValue{get{returnmValue;}......
  • python的重载
    python是没有重载概念的,同名的函数,最后一次的定义会覆盖原有的定义。但是通过python强大的魔法函数,实现出与C++类似的重载效果。1、参数个数不同的情况这种情况下的重载,如果直接按照C++的形式编写,是不会生效的,结果会是最后一个三参数的实现覆盖了前两个实现。deffun(a):......
  • wxpython窗口重载的一种思路(销毁重建)
    例如现在有一个dialog类:classDetailGridDialog(wx.Dialog):def__init__(self,parent,A,B,C):super().__init__(parent,title="示例",style=wx.RESIZE_BORDER|wx.DEFAULT_DIALOG_STYLE|wx.MAXIMI......
  • typeScript学习-泛型
    typeScript学习泛型为什么要用泛型?泛型定义。泛型在类中的应用?封装一个面向对象的ArrayList类。泛型默认值。泛型约束。泛型在Vue3源码中的应用。exendskeyof+keyof的联合应用。泛型反向赋值。具有以下特点的数据类型叫泛型:特点一:定义时不明确使用时必须明确成某......
  • C++函数重载、默认形参
    一、函数重载1、什么是函数重载?在同一作用域下,函数名相同,参数列表不同的函数构成重载关系函数重载与返回值类型、参数名无关与作用域是否相同,以及参数列表的数量、参数类型、常属性不同等有关2、C++是如何实现函数重载的?通过g++-S生成汇编代码可知,编译器会把函数的参数类......