typescript 中實(shí)現(xiàn)函數(shù)重載的方式:為同一個函數(shù)名稱創(chuàng)建多個函數(shù)聲明,每個聲明具有不同的參數(shù)類型。根據(jù)參數(shù)類型選擇適當(dāng)?shù)暮瘮?shù)實(shí)現(xiàn),執(zhí)行不同的操作。
typescript 中如何實(shí)現(xiàn)重載
TypeScript 允許函數(shù)具有重載,這意味著同一個函數(shù)可以接受不同類型和數(shù)量的參數(shù)并返回不同的返回值。
實(shí)現(xiàn)方式
TypeScript 中實(shí)現(xiàn)重載的方法是為同一個函數(shù)名稱創(chuàng)建多個函數(shù)聲明,每個聲明都有不同的參數(shù)類型。例如:
function add(a: number, b: number): number; function add(a: string, b: string): string; function add(a: any, b: any) { if (typeof a === "number" && typeof b === "number") { return a + b; } else if (typeof a === "string" && typeof b === "string") { return a + b; } else { throw new Error("Invalid argument types"); } }
在這個例子中:
- 函數(shù) add 有兩個聲明,每個聲明定義了不同的參數(shù)類型。
- 每個聲明都有一個單獨(dú)的函數(shù)實(shí)現(xiàn),該實(shí)現(xiàn)根據(jù)參數(shù)類型執(zhí)行不同的操作。
使用規(guī)則
使用重載函數(shù)時必須遵循以下規(guī)則:
- 聲明中參數(shù)的順序和數(shù)量必須不同。
- 返回值類型可以不同。
- 編譯器將根據(jù)調(diào)用時的參數(shù)類型選擇適當(dāng)?shù)暮瘮?shù)實(shí)現(xiàn)。
示例
以下示例展示了如何使用重載函數(shù):
const sumNumbers = add(1, 2); // 返回 3 const concatStrings = add("Hello", "World"); // 返回 "HelloWorld"
注意
TypeScript 中的重載是編譯時功能。這意味著重載函數(shù)的實(shí)際實(shí)現(xiàn)將被編譯為單個 JavaScript 函數(shù),該函數(shù)根據(jù)傳遞的參數(shù)動態(tài)選擇要執(zhí)行的代碼。