TypeScript-函数

卢植
• 阅读 1144
  • 封装
//js中的函数封装方式
function add1(x,y){
    return x+y
}
const add2 = function(x,y){
    return x+y
}
//TS中的函数封装,可以指定参数和返回值的类型
function add3(x:number,y:number):number{
    return x+y
}
const add4 = function(x:number,y:number):number{
    return x+y
]
//函数的完整写法
    //const add5:类型 = function(x:number,y:number):number{return x+y}
    //类型=(x:number,y:number)=>number
const add5: (x:number,y:number)=>number =function(x:number,y:number):number{
    return x+y
}
  • 可选参数和默认参数
    在TS中,调用函数时,传入参数的数量与类型与定义函数时设定的形参不一致会提示错误,我们可以在定义函数时给参数设置默认值,也可以设置参数为可选参数(调用时可传,可不传)

    默认参数: 形参名:类型 = 默认值
    可选参数: 形参名?:类型
    
function getFullName(firstName:string='张三',lastName?:string):string{
    if(lastName){
        return firstName + '_' + lastName
    }else{
        return firstName
    }
}
console.log(getFullName()) //张三
console.log(getFullName('诸葛')) //诸葛
console.log(getFullName('诸葛','孔明')) //诸葛_孔明
  • 剩余参数(rest参数)

    ...args:string[] //每个元素都是string类型的数组
    
function showMsg(str:string,...args:string[]){ //args是形参名,可用其他的名,但默认用args
    consoel.log(str)  //a
    console.log(args) //['b','c','d','e']
}
showMsg('a','b','c','d','e')
  • 函数重载
    函数名字相同,根据函数的参数及个数不同,执行不同操作
//声明函数重载
function add(x:string,y:string):string
function add(x:number,y:number):number

//声明函数
function add(x:string|number,y:string|number):string|number{
    if(typeof x === 'string'&& typeof y === 'string'){
        return x+'_'+y
    }else if(typeof x === 'number'&& typeof y === 'number') {
        return x+y
    }
}
console.log(add('诸葛','孔明')) //诸葛_孔明
console.log(add(10,10)) //20
console.log(add('a',1)) //提示错误 继续编译打印undefined
console.log(add(2,'b')) //提示错误 继续编译打印undefined
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql中时间比较的实现
MySql中时间比较的实现unix\_timestamp()unix\_timestamp函数可以接受一个参数,也可以不使用参数。它的返回值是一个无符号的整数。不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数,如果使用参数,参数的类型为时间类型或者时间类型的字符串表示,则是从1970010100:00:0
Wesley13 Wesley13
3年前
Java 8 中的 Lambda 表达式 vs. Kotlin 中的 Lambda
直接上一段Kotlin的函数式编程的代码:packagecom.easykotlin.lec02funsum1(x:Int,y:Int):Int{returnxy}funsum2(x:Int,y:Int)xy//
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
JS 对象数组Array 根据对象object key的值排序sort,很风骚哦
有个js对象数组varary\{id:1,name:"b"},{id:2,name:"b"}\需求是根据name或者id的值来排序,这里有个风骚的函数函数定义:function keysrt(key,desc) {  return function(a,b){    return desc ? ~~(ak
Stella981 Stella981
3年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(