typescript学习(二)——函数

一、函数的定义

// 1. 函数声明法
// 规定返回值必须为string类型
function run():string {
	return 'im string'
}
// 2. 匿名函数法
let run = function():string {
	return 'im string'
}
// 没有返回值时
function run():void {
	return 'im string'
}

二、函数传参

es5中方法的实参和形参数目可以不一致,但ts中必须一致,当可能存在不一致情况时要配置可选参数。

// 1. 一般形式
function getInfo(name:string, age:number):string {
	return `${name} --- ${age}`
}
// 2. 可选参数 
// 在可选参数前面加上?表示这个参数可以没有
// 注意:可选参数必须在必需参数后面,即可选参数后面不允许再出现必需参数
function getInfo(name:string, age?:number):string {
	if (age) {
		return `${name} --- ${age}`
	} else {
		return `${name}`
	}
}
// 3. 默认参数
// es5中无法设置默认参数,但es6和ts中都可以设置默认参数
// 调用函数时,没有传入指定参数就默认使用设置的参数
// 注意:ts会将默认参数识别为可选参数,但其不受【可选参数必须在必需参数后面】的限制
// 3.1 ts中设置默认参数
function getInfo(name:string, age = 20):string {
	if (age) {
		return `${name} --- ${age}`
	} else {
		return `${name}`
	}
}
// 3.2 es6中设置默认参数
function getInfo(name, age = 20) {
	if (age) {
		return `${name} --- ${age}`
	} else {
		return `${name}`
	}
}

// 4. 剩余参数
// 普通情况,需要很多个形参接收参数
function sum (a:number, b:number, c:number, c:number):number {
	return a+b+c+d
}
// 用剩余参数,接收传来的多余参数
// 用数字数组表示
function sum(...res:number[]):number {
}

三、函数重载

ts中的重载,通过为同一个函数提供多个函数类型定义实现多种功能目的。
ts为了兼容es5以及es6重载的写法和java中有区别(es5中出现同名方法,下面的会替换上面的方法)。

  • 重载的意义
// 利用联合类型实现判断传入数据类型,返回对应数据的需求
function reverse(x: number | string): number | string | void {
    if (typeof x === 'number') {
        return Number(x.toString().split('').reverse().join(''));
    } else if (typeof x === 'string') {
        return x.split('').reverse().join('');
    }
}
// 但这样就不能精确表达,无法控制输出变量类型,如输入为数字时,输出应该也为数字
// 用重载增加类型控制
function reverse(x: number): number;
function reverse(x: string): string;
function reverse(x: number | string): number | string | void {
    if (typeof x === 'number') {
        return Number(x.toString().split('').reverse().join(''));
    } else if (typeof x === 'string') {
        return x.split('').reverse().join('');
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值