01-函数
//! 函数重载
//! 函数的名字相同,函数的参数及个数不同
(() => {
//定义一个函数
/**
* *我们有一个add函数,它可以接收2个string类型的参数进行拼接,也可以接收2个number类型的参数进行相加
*/
// 函数重载声明
function name(x: string, y: string): string;
function name(x: number, y: number): number;
// 函数声明
function name(x: number | string, y: number | string): number | string {
if (typeof x === "string" && typeof y === "string") {
return x + y;
} else if (typeof x === "number" && typeof y === "number") {
return x + y;
}
return "";
}
//函数调用
console.log(name("诸葛", "孔明"));
console.log(name(10, 10));
//? 如果传入的是非法的数据
//console.log(name("嗷嗷", 10));
})();
复制代码
02-可选的参数和默认的参数
//! 可选参数 函数在声明的时候,内部的参数使用了?进行修饰, 那么这个参数可以传入也可以不传入,可以叫做可选参数
//! 默认参数 函数在声明的时候,内部的参数有自己的默认值,此时这个参数就可以叫做默认参数
(() => {
//?定义一个函数
/**
* * 传入姓氏和名字,可以得到姓名(姓氏+名字=姓名)
* * 需求:如果不传入任何内容,那么返回默认的姓氏
* * 需求:如果只传入姓氏,那么返回姓氏
* * 需求:如果传入姓氏和名字,那么返回的就是姓名
*/
const getName = function (firstName: string = "令", lastName?: string) {
//? 判断名字是否传入
if (lastName) {
return firstName + "_" + lastName;
} else {
return firstName;
}
};
//?函数调用
//什么也不传
console.log(getName());
//只传入姓氏
console.log(getName("诸葛"));
//传入姓氏和名字
console.log(getName("诸葛", "曹操"));
})();
复制代码
03-剩余的参数
//! 剩余参数 rest
/**
* ! 剩余参数是放在函数声明的时候所有的参数的最后
*/
(() => {
//? ...args: string[] ----> 剩余的参数,放在了一个字符串的数组中
function name(str: string, ...args: string[]) {
console.log("str: ", str); // 拿到了a
console.log("args: ", args); // 拿到了 b c
}
name("a", "b", "c");
})();
复制代码
04-函数重载
//! 函数重载
//! 函数的名字相同,函数的参数及个数不同
(() => {
//定义一个函数
/**
* *我们有一个add函数,它可以接收2个string类型的参数进行拼接,也可以接收2个number类型的参数进行相加
*/
// 函数重载声明
function name(x: string, y: string): string;
function name(x: number, y: number): number;
// 函数声明
function name(x: number | string, y: number | string): number | string {
if (typeof x === "string" && typeof y === "string") {
return x + y;
} else if (typeof x === "number" && typeof y === "number") {
return x + y;
}
return "";
}
//函数调用
console.log(name("诸葛", "孔明"));
console.log(name(10, 10));
//? 如果传入的是非法的数据
//console.log(name("嗷嗷", 10));
})();
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END