1.TS函数
(1)JS中的函数
function say1(name) {
console.log(name);
}
匿名函数:
let say2 = function (name) {
console.log(name);
}
箭头函数:
let say3 = (name) => {
console.log(name);
}
(2)TS中的函数
function say1(name:string):void {
console.log(name);
}
匿名函数:
let say2 = function (name:string):void {
console.log(name);
}
箭头函数:
let say3 = (name:string):void =>{
console.log(name);
}
2.函数声明和重载
(1)TS函数完整格式
定义一个函数:
let AddFun:(a:number, b:number)=>number;
根据定义实现函数:
AddFun = function (x:number, y:number):number {
return x + y;
};
调用函数:
let res = AddFun(10, 20);
console.log(res);
一步到位写法:
let AddFun:(a:number, b:number)=>number =
function (x:number, y:number):number {
return x + y;
};
let res = AddFun(20, 20);
console.log(res);
根据函数的定义自动推导对应的数据类型:
let AddFun:(a:number, b:number)=>number =
function (x, y) {
return x + y;
};
let res = AddFun(20, 20);
console.log(res);
(2)TS函数声明
先声明一个函数:
type AddFun = (a:number, b:number)=>number;
再根据声明去实现这个函数:
let add:AddFun = function (x:number, y:number):number {
return x + y;
};
调用:
let res = add(30, 20);
console.log(res);
根据函数定义自动推导对应的函数类型:
type AddFun = (a:number, b:number)=>number;
let add:AddFun = function (x, y) {
return x + y;
};
let res = add(30, 20);
console.log(res);
(3)TS函数重载
函数的重载就是同名的函数可以根据不同的参数实现不同的功能。
定义函数的重载:
function getArray(x:number):number[];
function getArray(str:string):string[];
实现函数的重载:
function getArray(value:any):any[] {
if(typeof value === 'string'){
return value.split('');
}else{
let arr = [];
for(let i = 0; i <= value; i++){
arr.push(i);
}
return arr;
}
}
let res1 = getArray(10);
let res2 = getArray('www.it666.com');
console.log(res1,res2);
3.可选、默认、剩余参数
(1)可选参数
function add(x:number, y:number, z?:number):number {
return x + y + (z ? z : 0);
}
let res1 = add(10, 20);
let res2 = add(10, 20, 30);
console.log(res1,res2);
可选参数可以配置函数重载一起使用, 这样可以让函数重载变得更加强大。
function add(x:number, y:number):number;
function add(x:number, y:number, z:number):number;
function add(x:number, y:number, z?:number) {
return x + y + (z ? z : 0);
}
let res = add(10, 20, 30);
console.log(res);
可选参数可以是一个或多个,可选参数后面只能跟可选参数。
function add(x:number, y?:number, z?:number):number {
// function add(x:number, y?:number, z:number):number { // 可选参数后面只能跟可选参数
return x + (y ? y : 0) + (z ? z : 0);
}
let res = add(10); // 可选参数可以是一个或多个
console.log(res);
(2)默认参数:
function add(x:number, y:number=10):number {
return x + y;
}
// let res = add(10);
let res = add(10, 30);
console.log(res);
(3)剩余参数
function add(x:number, ...ags:number[]) {
console.log(x);
console.log(ags);
}
add(10, 20, 30, 40, 50)