TypeScript学习笔记(5)——函数

TypeScript函数的三种定义类型
1,定义时有函数本身的参数约束、返回值约束

// 声明式类型的函数
function funcType(name:string,age:number):number {
    return 2*age
}
var ageNum:number = funcType('huzhen', 23)
// var ageNum:number = funcType('huzhen', 23, 12); //报错

// 函数某个参数不确定是否传
function funcType2(name:string,age:number,sex?:string):number {
    return 2*age
}
var agenum2:number = funcType2('ke', 18, '女')
var agenum22:number = funcType2('hu', 12)

函数参数的默认值

// 函数参数的默认值(如果一个参数有默认值,则这个参数可以不传)
function functype3(name?:number,age:number=20):number {
    return name + age;
}
console.log(functype3()) //NaN,第一个参数有?可以不传,第二个参数有默认值可以不传
console.log(functype3(22)) //42
console.log(functype3(3, 5)) //8
// 第一个参数有默认值可以不传,第二个参数必须要传
function functype4(name:number=10,age:number):number {
    return name + age;
}
console.log(functype4(20)) //报错
console.log(functype4(undefined, 20)) //30,第一个参数可以不传,为了不报错第一个参数可以传undefined
console.log(functype4(3, 5)) //8

2,定义时有函数本身的参数约束、返回值约束,还有函数本身赋值的变量的约束

// 表达式类型的函数
var func = function(name:string,age:number):number {
    return age
}
// 第一种约束方案
var func2:(name:string,age:number)=>number = function(name:string,age:number):number {
    return age
}
// 第二种约束方案
interface funcTp {
    (name:string,age:number):number
}
var func3:funcTp = function(name:string, age:number):number {
    return age
}

3,采用重载的方式支持联合类型的函数关系

// 对于联合类型的行数,可以采用重载的方式
function getValue(value:number):number
function getValue(value:string):string
function getValue(value:string|number):string|number {
    return 'huzhen'
}
let a:string|number = getValue(1) //希望返回的是数字1,但是返回的是联合类型的1,所以不好
let b:number = getValue(2)
let c:string = getValue('333')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值