# TypeScript 函数或方法重载

> 原文： [https://howtodoinjava.com/typescript/function-overloading/](https://howtodoinjava.com/typescript/function-overloading/)

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

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

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

还应注意，**函数实现必须与所有重载签名**兼容。 它应该始终是列表中的**最后一个**，并以`any`类型或[联合类型](https://howtodoinjava.com/typescript/union-types/)作为其参数的类型。

## 函数重载示例

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

```java
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;
} 

```

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

学习愉快！