先看一下es5中定义函数的方式:
// 函数声明
function run3() { }
// 匿名函数
var run4 = function () { }
再看一下ts中的定义函数的方式:
// 函数声明法
function run5(): string {
return "run5";
}
// 匿名函数
var run6 = function (): number {
return 123;
}
// 有参数的方法定义
function getInfo(name: string, age: number):string {
return `name:${name},age:${age}`;
}
var fun1 = function (name: string, age: number): string {
return `name:${name},age:${age}`;
}
console.log(getInfo('张三',13));
console.log(fun1('李四', 19));
// 配置可选参数(加一个问号),可选参数必须配置到最后面
function getInfo2(name: string, age?: number):string {
if (age) {
return `name:${name},age:${age}`;
} else {
return `name:${name},age:保密`;
}
}
console.log(getInfo2('王五'));
// 默认参数
function getMsg(name: string, age: number = 20): string {
return `姓名:${name},年龄:${age}`;
}
console.log(getMsg('李留'));
// 剩余参数(使用三点运算符)
function sum(...result:number[]):number {
var sums = 0;
for (var i = 0, leng = result.length; i < leng; i++) {
sums += result[i];
}
return sums;
}
console.log(sum(1,2,3,4));
function sum2(a:number,...result:number[]):number {
var sums = a;
for (var i = 0, leng = result.length; i < leng; i++) {
sums += result[i];
}
return sums;
}
console.log(sum2(1, 2, 3, 4));
// 函数的重载
// 函数的重载
function getStuMsg(name: string): string ;
function getStuMsg(age: number): number;
function getStuMsg(str: any): any {
if (typeof str === 'string') {
return '我是' + str;
} else {
return '我的年龄是' + str;
}
}
console.log(getStuMsg('dsds'));
function getStuMsg2(name: string): string ;
function getStuMsg2(name:string,age: number): number;
function getStuMsg2(name: any,age?:any): any {
if (age) {
return '我是' + name + '年龄' + age;
} else {
return '年龄' + name;
}
}
console.log(getStuMsg2('dsds'));
// 箭头函数
setTimeout(() => {
console.log(67);
},500)