成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

什么是 TypeScript 中的函數(shù)重載?

開發(fā) 前端
你知道為什么下圖中定義了這么多ref函數(shù),它們是干什么用的嗎?如果你還不是很清楚,看完本文的內(nèi)容,或許你就會明白了。

你知道為什么下圖中定義了這么多ref函數(shù),它們是干什么用的嗎?如果你還不是很清楚,看完本文的內(nèi)容,或許你就會明白了。

圖片

這是一個簡單的logError函數(shù),接受一個字符串類型的參數(shù),用于輸出錯誤信息。

function logError(msg: string) {
console.error(`Error occurred: ${msg}`);
}
logError("Missing required field.");

現(xiàn)在問題來了,如果我們想讓logError函數(shù)以數(shù)組的形式支持多條錯誤信息怎么辦?給你幾秒鐘的時間思考一下,你想出答案了嗎?

解決方案之一是使用聯(lián)合類型:

function logError(msg: string | string[]) {
if (typeof msg === "string") {
console.error(`Error occurred: ${msg}`);
} else if (Array.isArray(msg)) {
console.error(`Errors occurred: ${msg.join("\n")}`);
}
}
logError("Missing required field.");
logError(["Missing required field.", "The length cannot be less than 6."]);

另一種解決方案是使用函數(shù)重載,使用函數(shù)重載技術(shù),我們需要定義重載簽名和實現(xiàn)簽名。

重載簽名定義了函數(shù)中每個參數(shù)的類型和函數(shù)的返回值類型,但不包含函數(shù)體。一個函數(shù)可以有多個重載簽名。

實現(xiàn)簽名的參數(shù)類型和返回值類型需要使用更通用的類型,同時也包含實現(xiàn)簽名的函數(shù)體。一個函數(shù)只能有一個實現(xiàn)簽名。

圖片

結(jié)合重載簽名和實現(xiàn)簽名后,我們實現(xiàn)了上述功能:

圖片

請注意,只有重載簽名是可調(diào)用的。當 TypeScript 編譯器處理函數(shù)重載時,它會查找重載列表并嘗試使用第一個重載定義。如果匹配則立即返回。

圖片

當使用與實現(xiàn)簽名對應(yīng)的類型的參數(shù)調(diào)用實現(xiàn)簽名函數(shù)時,會發(fā)生錯誤。

圖片

除了重載函數(shù),我們還可以重載類中的方法。方法重載是指調(diào)用同一個類中同名不同參數(shù)(參數(shù)類型不同、參數(shù)個數(shù)不同、參數(shù)個數(shù)相同時參數(shù)順序不同)的方法,而該方法 匹配它被選中,按照實參的形式進行運算。

讓我們看一個方法重載的例子:

class Calculator {
add(a: number, b: number): number;
add(a: string, b: string): string;
add(a: string, b: number): string;
add(a: number, b: string): string;
add(a: string | number, b: string | number) {
if (typeof a === 'string' || typeof b === 'string') {
return a.toString() + b.toString();
}
return a + b;
}
}
const calculator = new Calculator();
const result = calculator.add('Bytefer', ' Kakuqo');

看完這篇文章,你應(yīng)該知道函數(shù)重載技術(shù)是在Vue3響應(yīng)式模塊中ref函數(shù)背后使用的。

如果你想學習 TypeScript,那就不要錯過 Mastering TypeScript 系列。

責任編輯:華軒 來源: web前端開發(fā)
相關(guān)推薦

2021-12-10 09:11:36

TypeScript 函數(shù)重載 TS 前端

2022-01-04 19:21:04

函數(shù)TypeScript重載

2020-12-18 11:35:22

TypeScript語言Java

2022-02-28 08:17:24

重載函數(shù)JS前端

2022-03-14 08:33:09

TypeScriptJavaScript前端

2011-07-20 17:16:50

C++重載函數(shù)

2022-04-11 19:55:26

函數(shù)類型函數(shù)重載

2022-04-10 19:26:07

TypeScript類型語法

2016-10-11 13:32:50

函數(shù)式TypeScriptJavascript

2021-06-01 06:00:06

typescriptjavascript

2010-01-18 16:56:30

C++函數(shù)

2009-07-31 16:00:30

C#函數(shù)重載

2024-09-09 08:35:30

2021-11-08 11:02:01

Go函數(shù)重載

2016-09-30 09:43:17

JavascriptTypeScript函數(shù)式編程

2022-07-04 08:54:39

Swift處理器項目

2024-04-15 12:54:40

2021-09-07 08:33:27

JavaScript TypeScript 函數(shù)

2021-12-28 08:37:32

CTypeScriptJavaScript

2021-08-18 07:56:05

Typescript類型本質(zhì)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 91夜色在线观看 | 美女久久 | 国产精品国产 | 91麻豆精品国产91久久久资源速度 | 日韩欧美不卡 | 国产亚洲日本精品 | 91视视频在线观看入口直接观看 | 日本精品在线一区 | 桃花av在线| 亚洲久在线 | 国产精彩视频 | 青青久草 | 亚洲精品一区二区在线 | 免费一区二区三区 | 国产精品我不卡 | 亚洲国产欧美在线 | 国产高清一区二区三区 | 天天天天天操 | 国产成人精品一区二 | 亚洲精品一二三区 | 99在线免费观看视频 | 一区二区在线免费观看视频 | 成人免费视屏 | 天天做日日做 | 91一区二区三区在线观看 | 免费一级片 | 亚洲一区二区三区四区五区中文 | 日韩精品中文字幕一区二区三区 | 久久精品国产一区二区电影 | 91精品国产综合久久小仙女图片 | 久久人人网| 99热国产免费 | 日韩中文字幕av | 91精品一区二区 | 日韩欧美精品 | 欧美精品二区 | 欧美久久精品一级黑人c片 91免费在线视频 | 中文在线视频观看 | 亚洲精品久久久久久首妖 | 国产成人精品区一区二区不卡 | 精品www|