个性化阅读
专注于IT技术分析

TypeScript函数重载 – TypeScript开发教程

上一章TypeScript教程请查看:TypeScript箭头函数用法详解

函数重载是一种机制,可以创建多个同名但参数类型和返回类型不同的方法。但是,它可以有相同数量的参数。函数重载也称为方法重载。

在以下情况下,允许函数/方法重载:

  • 函数名是相同的
  • 每个重载函数的参数数量是不同的。
  • 参数的数量相同,但类型不同。
  • 所有重载函数必须具有相同的返回类型。

假设我们要执行数的乘法,它有不同数量的参数。我们为两个参数编写两个方法,如mul_a(number, number),为三个参数编写mul_b(number, number, number)。现在,我们和其他程序员可能很难理解这个方法的行为,因为它的名称不同。在这种情况下,我们需要使用函数重载,这增加了程序的可读性。

函数重载的优点

  • 它节省了内存空间,使程序执行变得更快。
  • 它提供了代码可重用性,从而节省了时间和精力。
  • 它增加了程序的可读性。
  • 代码维护很容易。

例子

//带有字符串类型参数的函数  
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。
  • 最后两条语句调用重载函数。

编译完上述TypeScript程序后,我们将得到以下JavaScript代码。

//函数定义
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"));  

不支持使用不同数量的参数和不同类型以及相同函数名的函数重载。

例子

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);  
}  
赞(0)
未经允许不得转载:srcmini » TypeScript函数重载 – TypeScript开发教程

评论 抢沙发

评论前必须登录!