📜  如何在 TypeScript 中实现函数重载?

📅  最后修改于: 2022-05-13 01:56:17.718000             🧑  作者: Mango

如何在 TypeScript 中实现函数重载?

在本文中,我们将尝试了解与函数/方法重载概念相关的一些基本细节,进一步了解如何在 TypeScript 中实现函数重载。

让我们首先了解函数/方法重载中涉及的一些基本事实。

函数/方法重载:

  • 方法重载是一个方法可以多次使用相同名称不同参数类型返回类型的过程。
  • 重载函数中的函数名和参数个数应该相同。
  • 可以更改(更改)重载函数的返回类型以及参数的数据类型。
  • 方法重载提供代码可重用性,从而节省时间和精力。
  • 这个过程还节省了内存空间,使程序执行变得更快。
  • 这个过程还增加了代码的可读性。

在分析了与方法重载相关的一些基本理论方面之后,让我们通过下面的代码示例来分析它在 TypeScript 中的实现。

例1:在这个例子中,我们将创建几个函数(同名,但参数数据类型和函数的返回类型不同),我们将通过这些函数添加几个不同数据类型的用户传入的数据。

Javascript
function addData(data1 : string, data2 : string) : string;
  
function addData(data1 : number, data2 : number): number;
  
function addData(data1 : any, data2 : any){
    return data1+ data2;
}
  
console.log(addData("Hello ", "GeeksforGeeks"));  
console.log(addData(20, 30));


Javascript
class Data
{  
    public displayData(data: string): number;  
    public displayData(data: number): string;  
    public displayData(data : any): any   
    {  
        if (typeof(data) === 'number')  
            return data.toString();  
        if (typeof(data) === 'string')  
            return data.length;  
    }  
}  
  
let object = new Data();  
console.log("Result is : " + object.displayData(123456));
let stringData = "GeeksforGeeks";  
console.log("Length of String " +  stringData 
    + " is : " + object.displayData(stringData));


输出:

Hello GeeksforGeeks
50

示例 2:在此示例中,我们将在一个类中实现函数重载,该类包含具有相同名称的不同方法以及不同参数的数据类型和方法的返回类型,并且我们将使用这些方法以不同的方式打印我们的数据。

Javascript

class Data
{  
    public displayData(data: string): number;  
    public displayData(data: number): string;  
    public displayData(data : any): any   
    {  
        if (typeof(data) === 'number')  
            return data.toString();  
        if (typeof(data) === 'string')  
            return data.length;  
    }  
}  
  
let object = new Data();  
console.log("Result is : " + object.displayData(123456));
let stringData = "GeeksforGeeks";  
console.log("Length of String " +  stringData 
    + " is : " + object.displayData(stringData));

输出:

Result is : 123456
Length of String GeeksforGeeks is : 13