TypeScript 中的函数
- 一、函数的定义
- es5 定义函数的方法
- TypeScript 定义函数的方法
- ts 中定义方法传参
- 二、可选参数
- 三、默认参数(跟可选参数一样)
- 四、剩余参数(三点运算符的应用)
- 五、函数重载
- 六、箭头函数 es6
一、函数的定义
es5 定义函数的方法
// 函数声明
function run(){return "run"
}
// 匿名函数
var run4 = function(){return "run4"
}
TypeScript 定义函数的方法
// 函数声明
function run():string {return "run"
}
// 匿名函数
var run2 = function():number{return 100
}
console.log(run2())// 调用方法
ts 中定义方法传参
返回值和参数都有类型
//传参
function getInfo(name: string, age:number):string{return `${name}---${age}`
}// console.log(getInfo('zs', 'li'))//错误写法,编译不通过
console.log(getInfo('zs', 20))
//匿名函数定义传参
let getInfo2=function(name: string, age:number):string{return `${name}---${age}`
}
console.log(getInfo2('zs', 20))
//没有返回值的方法
function run2():void{console.log("run2")
}
run2()
二、可选参数
es5 里面的方法的实参和形参 可以不一样,但是ts 中必须要一样,如果不一样就需要配置可选参数(使用 问号?)
function getInfo(name: string, age?:number):string{if(age) {return `${name}---${age}`} else {return `${name}---保密`}}
console.log(getInfo('zs'))
console.log(getInfo('zs', 20))
注意:可选参数必须配置到参数的最后面,以下是一个错误写法,ts 编译不通过
function getInfo(name?: string, age:number):string{if(age) {return `${name}---${age}`} else {return `${name}---保密`}}
console.log(getInfo('zs'))
三、默认参数(跟可选参数一样)
es5 里面没法设置默认参数,es6 和ts 中都可以设置默认参数
function getInfo(name: string, age:number = 20):string{if(age) {return `${name}---${age}`} else {return `${name}---保密`}}
console.log(getInfo('zs'))
四、剩余参数(三点运算符的应用)
function sum(a:number, b:number, c:number):number {return a+b+c
}
console.log(sum(1,2,3))//6//三点运算符 接收形参传过来的值
function sum2(...result:number[]):number {let sum = 0;for(let i = 0; i< result.length; i++) {sum += result[i]}return sum
}
console.log(sum2(1,2,3,7,8,8,0))//29function sum3(a:number,...result:number[]):number {let sum = a;for(let i = 0; i< result.length; i++) {sum += result[i]}return sum
}
console.log(sum3(1,2,3,7,8,8,0))//29
五、函数重载
java 中方法的重载:重载指的是两个或者两个以上同名函数,但它们的参数不一样,这时会出现函数重载的情况
TypeScript 中的重载:通过同一个函数提供多个函数类型定义来实现多种功能的目的(同样的方法,不同的参数,实现不同的功能)
ts 为了兼容 es5 和 es6 重载的写法和java 中有区别
//es5 中出现同名方法,下面的会替换上面的方法
function css(config:any) {}
function css(config, value) {}
//ts 中的重载--- 参数不一样
function getInfo3(name:string):string;
function getInfo3(age:number):number;
function getInfo3(str:any):any {if(typeof str === 'string') {return "我叫"+str} else {return "我的年龄是:"+str}
}
console.log(getInfo3('zs'))// 正确写法
console.log(getInfo3(12))// 正确写法
// console.log(getInfo3(true))// 错误写法
function getInfo4(name:string):string;
function getInfo4(name:string, age:number):number;
function getInfo4(name:any, age?:any):any {if(typeof age === 'string') {return "我叫"+name +"我的年龄是:"+age} else {return "我叫"+name}
}
console.log(getInfo4('zs'))// 正确写法
console.log(getInfo4('sansan',12))// 正确写法
console.log(getInfo4(12))// 错误写法
六、箭头函数 es6
this 指向的问题,箭头函数里面的 this 指向上下文
// es5的写法
setTimeout(function(){console.log("异步任务,es5的写法")
},1000)// es6 箭头函数, this 指向上下文
setTimeout(()=>{console.log("异步任务,es5的写法")
},1000)