上一章TypeScript教程请查看:TypeScript箭头函数用法详解
函数重载是一种机制,可以创建多个同名但参数类型和返回类型不同的方法。但是,它可以有相同数量的参数。函数重载也称为方法重载。
在以下情况下,允许函数/方法重载:
- 函数名是相同的
- 每个重载函数的参数数量是不同的。
- 参数的数量相同,但类型不同。
- 所有重载函数必须具有相同的返回类型。
函数重载的优点
- 它节省了内存空间,使程序执行变得更快。
- 它提供了代码可重用性,从而节省了时间和精力。
- 它增加了程序的可读性。
- 代码维护很容易。
//带有字符串类型参数的函数
function add(a:string, b:string): string;
//带有数字类型参数的函数
function add(a:number, b:number): number;
//函数定义
function add(a: any, b:any): any {
return a + b;
}
//Result
console.log("加法: " +add("Hello ", "srcmini"));
console.log("加法: "+add(30, 20));
在上面的例子中:
- 前两行是函数重载声明,它有两个重载:
- 接受字符串参数的函数。
- 接受数字参数的函数。
- 第三行是函数定义,其中参数的数据类型设置为any。
- 最后两条语句调用重载函数。
//函数定义
function add(a, b) {
return a + b;
}
//Result
console.log("加法: " + add("Hello ", "srcmini"));
console.log("加法: " + add(30, 20));
类中的函数重载下面的示例有助于理解类中方法重载的使用。
class A
{
public foo(s: string): number;
public foo(n: number): string;
public foo(arg: any): any
{
if (typeof(arg) === 'number')
return arg.toString();
if (typeof(arg) === 'string')
return arg.length;
}
}
let obj = new A();
console.log("Result: " +obj.foo(101));
console.log("Length: " +obj.foo("srcmini"));
编译完上述TypeScript程序后,我们将得到以下JavaScript代码。
class A {
foo(arg) {
if (typeof (arg) === 'number')
return arg.toString();
if (typeof (arg) === 'string')
return arg.length;
}
}
let obj = new A();
console.log("Result: " + obj.foo(101));
console.log("Length: " + obj.foo("srcmini"));
不支持使用不同数量的参数和不同类型以及相同函数名的函数重载。
【TypeScript函数重载 – TypeScript开发教程】例子
function display(x:number, y:number):void //Compiler Error: Duplicate function implementation
{
console.log(x + x);
}function display(x:string): void //Compiler Error: Duplicate function implementation
{
console.log(x);
}
推荐阅读
- TypeScript三种函数参数解析 – TypeScript开发教程
- TypeScript箭头函数用法详解 – TypeScript开发教程
- TypeScript函数使用详解 – TypeScript开发教程
- TypeScript属性访问器 – TypeScript开发教程
- TypeScript三个访问修饰符 – TypeScript开发教程
- TypeScript集合set用法 – TypeScript开发教程
- TypeScript map用法和操作 – TypeScript开发教程
- TypeScript使用forEach方法遍历 – TypeScript开发教程
- TypeScript枚举类型用法 – TypeScript开发教程