5.函数扩展
1.函数的类型
const fn = (name: string, age: number): string => {
return "大家好我是" + name + "," + "今年" + age + "岁";
};
fn("fly", 18);
2.函数的可选参数
const fun = (name: string, age?: number): string => {
return name + age;
};
fun("fly");
3.函数参数默认值
const fn = (name: string = "我是默认值"): string => {
return name;
};
console.log(fn());
4.接口定义函数
interface Add {
(num: number, num2: number): number;
}
const add: Add = (num, num2) => {
return num + num2;
};
console.log(add(1, 2));
const fn = (num: number, num2: number): number => {
return num + num2;
};
fn(10, 5);
interface User {
name: string;
age: number;
}
function getUserInfo(user: User): User {
return user;
}
console.log(
getUserInfo({
name: "fly",
age: 18,
})
);
5.定义剩余参数
const fn = (array: number[], ...args: any[]): any[] => {
return args;
};
console.log(fn([11, 2, 3], "4", "5", "6", "7"));
6.函数this类型
interface Obj {
list: Array<number>;
add: (num:number) => void;
}
let obj: Obj = {
list: [1, 2, 3],
add: function (this: Obj,num) {
this.list.push(num);
console.log(this.list);
},
};
obj.add(4)
7.函数重载
let list = [1, 2, 3];
function findList(): Array<number>;
function findList(id: number): Array<number>;
function findList(add: Array<number>): Array<number>;
function findList(ids?: number | Array<number>): Array<number> {
if (typeof ids === "number") {
return list.filter((item) => ids === item);
} else if (Array.isArray(ids)) {
list.push(...ids);
return list;
} else {
return list;
}
}
console.log(findList());
console.log(findList(2));
console.log(findList([4, 5, 6]));