函数
JavaScript
- 命名函数
function say1(name){ console.log(name)}
- 匿名函数
let say2 = function (name){ console.log(name)}
- 箭头函数
let say1 = (name) => { console.log(name)}
TypeScript
- 命名函数
function say1(name:string):void{ console.log(name)}
- 匿名函数
let say2 = function (name:string):void{ console.log(name)}
- 箭头函数
let say1 = (name:string):void => { console.log(name)}
函数声明和重载
1.TS函数完整格式
- 在TS中函数的完整格式应该是由函数的定义和实现两个部分组成的
- 定义一个函数:
let AddFun:(a:number,b:number)=>number - 根据定义实现函数
AddFun = function (x:number,y:number):number{return x + y}
// 根据函数的定义自动推导对应的数据类型let AddFun:(a:number,b:number)=>number = function (x,y){ return x + y }
2.TS函数声明
// 先声明一个函数type AddFun = (a:number,b:number)=>number// 再根据声明去实现这个函数let add:AddFun = function (x,y) { return x + y}
3.TS函数重载
- 函数的重载就是同名的函数可以根据不同的参数实现不同的功能
// 定义函数重载function getArray(x:number):number[]function getArray(x:string):string[]// 实现函数重载function getArray(value:any):any[]{ if(typeof value === 'sting'){ return value.split('') }else{ let arr = [] for (let i = 0; i <= value; i++){ arr.push(i) } return arr }}let res1 = getArray(3) // res1 = [0,1,2,3]let res2 = getArray('magic') // res2 = ['m','a','g','i','c']
可选-默认-剩余参数
1.可选参数
// 定义一个函数实现2个数或者3个数相加function add(x:number,y:number,z?:number){ return x + y + (z ? z : 0)}let res1 = add(10,20) // res1 = 30let res2 = add(10,20,30) // res2 = 60
- 可选参数可以配合函数重载一起使用,这样可以让函数重载变得更加强大
function add(x:number,y:number):numberfunction add(x:number,y:number,z:number):numberfunction add(x:number,y:number,z?:number){ return x + y + (z ? z : 0)}
function add(x:number,y?:number,z?:number){ // 不报错 // function add(x:number,y?:number,z:number){ // 报错 return x + (y ? y : 0) + (z ? z : 0)}
2.默认参数
function getSum(a:number = 1, b:number = 2):number { console.log(a,b)}let res1 = getSum() // res1 = 3let res2 = getSum(10,20) // res2 = 30
function getSum(a:number, b:number = getDefault()):number { return a + b}let res1= getSum(1) // res1 = 3let res2 = getSum(10,20) // res2 = 30function getDefault():number { return 2}
3.剩余参数
- 扩展运算符在左边:将剩余数据打包到一个新的数组(注意:扩展运算符只能写在最后)
let [a,...b] = [1,3,5];//a = 1;//b = [3,5];
- 扩展运算符在右边:将数组中数据解开
let arr1 = [1,3,5]let arr2 = [2,4,6]let arr = [...arr1,...arr2]// arr = [1,3,5,2,4,6]
- 扩展运算符在函数的形参列表中:将传递给函数的所有实参打包到一个数组中(注意:扩展运算符只能写在最后)
function getSum(...values:number):number{ // values = [10,20] let sum = 0; for(let i = 0; i < values.length; i++){ let num = values[i] sum += num } return sum}let res = getSum(10,20) // res = 30