首页 > 编程知识 正文

重载函数的定义,构造函数重载例子

时间:2023-05-04 00:11:44 阅读:114339 作者:4165

重载叫什么名字? 参数类型不同

方法重载方法在类中定义了多个同名的方法,但每个同名的方法都需要不同的数据类型和不同的参数

以下方法以ArrayList为例重新加载数据

可以用id或对象删除可删除的数据删除

可以取得数据

类阵列{//此处不使用构造器(公共元件:阵列对象) }/* *公共元件3360阵列对象; constructor (element _ :阵列对象) { this.element=element_ }*//** *某个值*@Paramindex*@returns*/ggg 实现显示值show () this.element.foreach (I=console.log (I ) ) }/重新加载删除方法(remove ) vaament )的3360 number remove (val 3333330 ) object ) this.element=this.element.filter==index } else { return val!==e}}(returnval; }}let a={name:'zixia ',age:12},b={name:'selfsummer ',age:88},c={name: '今夏,age

例如,如果一个函数有多个参数,则每个参数都意味着没有意义,并且可以随时使用函数重载

定义函数重载如果一个或多个签名的组合被称为函数重载外部调用函数重载,则在稚嫩地调用重载之前(在函数体之前)被称为签名(这由TS规定)的函数重载将导致只有实现签名具有整个课程函数,所有重载签名都只有签名。 未设置函数体数据定义和类型定义的typemessagetype=' image '|' audio '|video '|string; 类型消息={ id : number; 类型:消息类型; sendmessage :字符串; (; //message :阵列消息同等下的let消息列表:消息[ ]=[ { id :1,type : '视频',sendMessage: '视频' {id: 3,type : '视频',sendmessage3360 '视频',},{id: 4, 不使用type: 'msg '函数而计算合并数据类型function getmessage (value : number ) :message|arraymessage| 卸载) if ) typeofvalue===使用的find搜索数据返回returnmessagelist.find () tyep )=value===tyep,对应于其中一个返回值(else(/返回数组returnmessagelist.filter ) () tyep )=tyep.type===value )。 }//console.log (getmessage (' video ' ); {id: 1,type : '视频',sendMessage: '视频', (/)当前要求是可以找到返回值的特定字段(/是使用联合类型转换将getMessage返回值转换为消息) /要在此处调用方法,必须传递number类型(查找返回) 函数重载函数加载消息(值:编号) :消息

e; // 重载签名有多个function loadMessage(value:MessageType):Message[];// 重载签名// function loadMessage(value:string):Message[] | Message |undefined{ // 第一个重载函数会报错 ,因为产书限定是 string (出错规则是根基第一个签名来匹配参数)// function loadMessage(value:number):Message[] | Message |undefined{ // 第二个重载函数会报错 ,因为产书限定是 string (出错规则是根基第一个签名来匹配参数)function loadMessage(value:string|number):Message[] | Message |undefined{ // 正确 if (typeof value === 'number') {// find 查找数据对应得某一条 返回翻个return messageList.find((tyep) => value === tyep.id);} else {// 返回的是数组return messageList.filter((tyep) => tyep.type === value);}}// 按住ctrl + 鼠标左键会定位到 直接对应类型的函数签名//此函数返回的 Message 数据类型 所有可通过点来获取值loadMessage(1).sendMessage;// 此处返回的是Message[] 数据类型 所有能调用数组的所有方法const infoMas = loadMessage('video');infoMas.forEach(i=>{console.log(i)}) 函数重载签名时候 多个参数不一致时 function newMessage(value:number):Message; // 重载签名有多个function newMessage(value:MessageType,pageCont:number):Message[];// 重载签名// function newMessage(value:string|number,pageCont:number = 1):Message[] | Message |undefined{ // 正确// function newMessage(value:string|number,pageCont?:number):Message[] | Message |undefined{ // 正确function newMessage(value:string|number,pageCont:number = 1){ // 这个可用省略返回数据类型,这里会进行类型推断,(PS 我猜这里应该是上面的重载签名有返回类型吧) if (typeof value === 'number') {// find 查找数据对应得某一条 返回翻个return messageList.find((tyep) => value === tyep.id);} else {// 返回的是数组return messageList.filter((tyep) => tyep.type === value).splice(0,pageCont)}}// 按住ctrl + 鼠标左键会定位到 直接对应类型的函数签名//此函数返回的 Message 数据类型 所有可通过点来获取值loadMessage(1).sendMessage;// 此处返回的是Message[] 数据类型 所有能调用数组的所有方法const infoMasnew = newMessage('video',2);infoMas.forEach(i=>{console.log(i)}) 构造器重载

构造器重载和函数重载使用基本相同,主要区别是:TS类构造器重载签名和实现签名都不要管理返回值(也没有返回值),TS构造器是在对象创建出来之后还没有赋值给对象变量之前执行,一般采用给对象属性赋值

构造器是在对象创建的整个过程中被使用到的,当对象创建完成后就不会使用到,构造器可以说成是构造函数,但是不能看做是方法

ts 和es6 的class 中的this 当new 一个对象时,构造器会隐式返回this 给对象等号左边的对象变量,this
和等号左边的对象都指向当前创建正在创建的对象 类会隐式返回this,如果要说 类有返回值那也只能是this

需求:根据传入的宽高计算面积 参数可为二个实参 可以为一个对象实参 type TypeSummation= { width?:number; height?:number;}class summation { public width; public height; constructor(width: number, height: number) constructor(ParamObje_:TypeSummation) // constructor(summationObj:any,height_?:number){ // 因为这个height_ 上面是构造器重载是必填参数 所以这里不建议使用可选参数 constructor(ParamObje_Obj_:any,height_=0){ if(typeof ParamObje_Obj_ === "object"){ const {width,height} = ParamObje_Obj_; this.width = width; this.height = height; }else{ this.width=ParamObje_Obj_; this.height = height_; } } sunArea():number{ return this.width*this.height }}const sun = new summation(40,50);console.log(sun.sunArea());const obj:TypeSummation={width:10,height:20}console.log(new summation(obj).sunArea());

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。