TypeScript 函数或方法重载

TypeScript 函数或方法重载

原文: https://howtodoinjava.com/typescript/function-overloading/

在 TypeScript 中,函数重载方法重载是创建具有相同名称和不同数量参数或类型的多个方法的能力。

因此从本质上讲,在以下情况下允许方法重载:

  1. 函数名称相同
  2. 每个重载中参数的数量不同
  3. 如果参数数量相同,则它们的类型必须不同
  4. 所有重载必须具有相同的返回类型

还应注意,函数实现必须与所有重载签名兼容。 它应该始终是列表中的最后一个,并以any类型或联合类型作为其参数的类型。

函数重载示例

假设我们正在创建一个函数,该函数将根据不同的参数(例如 id,email,名称或其组合)返回Employee类型。 让我们为此要求创建重载函数。

class Employee {}

function getEmployee(id: number): Employee; 					//Overload 1
function getEmployee(email: string): Employee; 					//Overload 2
function getEmployee(email: number, name: string): Employee; 	//Overload 3

//function getEmployee(name: string): Employee; 				//Error - Conflict with Overload 2

//Implement the function
function getEmployee (paramOne: string | number, paramTwo?: string ): Employee { 

	let employee: Employee;

    if( typeof paramOne === 'number') {
    	//Logic for overload 1
	} else if( typeof paramTwo != 'undefined') {
		//Logic for overload 3
	} else {
		//Logic for overload 2
	}

	return employee;
} 

将我的问题放在评论部分。

学习愉快!