0005TS函數類型詳解

TypeScript 中的函數類型用于為函數定義參數類型和返回值類型。這提供了一個清晰的契約,指明函數應該如何被調用和期望返回什么類型的結果。以下是 TypeScript 中函數類型的一些基本用法和概念:

函數聲明

在 TypeScript 中,你可以為函數的參數和返回值指定類型:

function add(x: number, y: number): number {return x + y;
}

在這個例子中,xy 都被指定為 number 類型,同時函數的返回類型也被定義為 number

函數表達式

你也可以在函數表達式中使用 TypeScript 的類型注解:

const add: (x: number, y: number) => number = function(x, y) {return x + y;
};
// 當函數作為表達式時,可以通過類似箭頭函數形式的語法來為函數添加類型
// 這種形式只適用于函數表達式
const add3: (a: number, b: number) => number = (a, b) => a + b

這里,add 的類型是一個函數類型,這意味著 add 是一個接受兩個 number 類型的參數并返回一個 number 類型的結果的函數。

箭頭函數

在 TypeScript 中,箭頭函數同樣可以使用類型注解:

const add: (x: number, y: number) => number = (x, y) => x + y;

這個例子和上面的函數表達式例子類似,但是采用了 ES6 的箭頭函數語法。

可選參數和默認參數

TypeScript 允許你指定函數參數為可選的,方法是在參數名后添加一個問號 ?。同時,你也可以為參數提供默認值:

function buildName(firstName: string, lastName?: string): string {if (lastName)return firstName + " " + lastName;elsereturn firstName;
}const result = buildName("John"); // 正確,lastName 是可選的

在這個例子中,lastName 是一個可選參數。

剩余參數

你可以使用剩余參數收集多個參數值到一個變量中:

function buildName(firstName: string, ...restOfName: string[]): string {return firstName + " " + restOfName.join(" ");
}const employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");

在這個例子中,...restOfName 表示剩余參數,它們被收集到一個名為 restOfName 的數組中。

函數重載

TypeScript 允許函數重載,意味著你可以為同一個函數提供多個函數類型定義:

function pickCard(x: {suit: string; card: number; }[]): number;
function pickCard(x: number): {suit: string; card: number; };
function pickCard(x): any {// 實現函數體
}

在這個例子中,pickCard 函數有兩個重載:一個接收對象數組,另一個接收數字。根據調用方式的不同,函數返回不同類型的值。

void類型

函數沒有返回值,則該類型為void

function sayHello(): void {console.log("hello")
}const sayHello2: () => void = () => {console.log("hello2")
}

通過這些示例,你可以看到 TypeScript 中的函數類型是如何提供額外的類型安全性和文檔信息的,有助于提高代碼的可讀性和可維護性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711489.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711489.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711489.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

揭秘!Excel如何成為職場中的價值創造利器

文章目錄 一、Excel在生產力提升中的作用二、Excel在創造價值方面的應用案例三、Excel實用技巧分享四、Excel與其他工具的協同應用五、Excel學習的建議與展望《Excel函數與公式應用大全》亮點內容簡介作者簡介目錄 在當今信息爆炸的時代,數據處理和分析能力已成為職…

AI智能分析網關V4智慧商場方案,打造智慧化商業管理生態

AI智能視頻檢測技術在商場樓宇管理中的應用越來越廣泛。通過實時監控、自動識別異常事件和智能預警,這項技術為商場管理提供了更高效、更安全的保障。今天我們以TSINGSEE青犀視頻AI智能分析網關為例,給大家介紹一下AI視頻智能分析技術如何應用在商場樓宇…

搶單情況下的均衡分配機制

背景: 1、工單有多種類型。 2、客戶提交工單。 3、不同客服受理不同類型工單,受理工單類型存在交叉。 4、按照類型維度實現均衡分配。 方案: 1、為每種類型創建一個工單池,使用隊列,左進右出;客戶提交…

Android AIDL RemoteCallbackLIst

RemoteCallbackLIst 參考地址 RemoteCallbackList 是 Android SDK 中的一個類,用于幫助管理進程之間的回調。它專為進程間通信 (IPC) 場景而設計,在該場景中,應用程序的不同部分甚至不同的應用程序可能在不同的進程中運行。 以下是其關鍵功能…

將所有字母轉化為該字母后的第三個字母,即A->D,B->E

//編寫加密程序,規則:將所有字母轉化為該字母后的第三個字母,即A->D,B->E,C->F,…Y->B,Z->C //小寫字母同上,其他字符不做轉化。輸入:I love 007 輸出:L oryh 007 代碼: #inc…

GVA快速使用

1. clone 代碼, 使用goland打開Server目錄, 使用vsc打開前端web目錄,運行后端,前端 gin-vue-admin后臺管理系統 - 知乎 (zhihu.com) 2.了解端口配置 參考, 基于Go的后臺管理框架Gin-vue-admin_go vue admin-CSDN博客…

配置MMDetection的solov2攻略整理

目錄 一、MMDetection 特性 常見用法 二、ubuntu20.04配置solov2 三、Windows11配置solov2 一、MMDetection MMDetection是一個用于目標檢測的開源框架,由OpenMMLab開發和維護。它提供了豐富的預訓練模型和模塊,可以用于各種目標檢測任務&#xff…

kamacoder 11.共同祖先的C語言奇妙解法

11. 共同祖先 時間限制&#xff1a;1.000S 空間限制&#xff1a;32MB 題目描述 小明發現和小宇有共同祖先&#xff01;現在小明想知道小宇是他的長輩&#xff0c;晚輩&#xff0c;還是兄弟。 輸入描述 輸入包含多組測試數據。每組首先輸入一個整數N&#xff08;N<10&a…

redis的基本數據類型(一)

redis的基本數據類型 1、redis1.1、數據庫分類1.2、NoSQL分類1.3、redis簡介1.4、redis應用1.5、如何學習redis 2、redis的安裝2.1、Windows安裝2.2.1、客戶端redis管理工具 2.2、Linux安裝&#x1f525;2.2.1、redis核心文件2.2.2、啟動方式2.2.3、redis桌面客戶端1、redis命令…

定義類的成員比較函數,并在類的成員函數里面調用

定義一個自定義排序規則的成員函數&#xff0c;然后在類的成員函數中調用 文章目錄 1.聲明為static函數2.使用function3.使用匿名函數 1.聲明為static函數 #include <iostream> #include <algorithm> #include <list> class A { public:A(){std::list<i…

Python進階學習:Pickle模塊--dump()和load()的用法

Python進階學習&#xff1a;Pickle模塊–dump()和load()的用法 &#x1f308; 個人主頁&#xff1a;高斯小哥 &#x1f525; 高質量專欄&#xff1a;Matplotlib之旅&#xff1a;零基礎精通數據可視化、Python基礎【高質量合集】、PyTorch零基礎入門教程&#x1f448; 希望得到您…

MyBatis-Plus 框架中的自定義元對象處理器

目錄 一、代碼展示二、代碼解讀 一、代碼展示 package com.minster.yanapi.handler;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component;import java.util…

JavaScript解構賦值--數組解構賦值與對象解構賦值

前言 解構賦值是JavaScript的一個強大特性&#xff0c;允許從數組或對象中提取數據&#xff0c;并賦值給定義的變量。 對象解構 直接根據屬性名來解構賦值&#xff1a; const person { name: 張三, age: 30 };const { name, age } person;console.log(name); console.lo…

動態路由使用

目錄 添加動態路由 添加單個路由 添加多個路由 指定路由添加的位置 導航守衛添加路由 刪除動態路由 添加動態路由 添加動態路由的方法有兩個&#xff1a;addRoutes&#xff08;添加多個路由&#xff09;和addRoute&#xff08;添加單個路由&#xff09;&#xff0c;但是a…

ASO 對App產品性能的影響

可發現性 擁有出色的App還不足以讓人們發現它&#xff0c;ASO技術通過提高搜索排名來增強App的可發現性。當用戶可以在搜索結果中輕松找到應用程序時&#xff0c;那么下載和成功的潛力就會飆升。 設定期望 實施有效的應用商店優化不僅可以為潛在用戶建立正確的期望&#xf…

東方通 | 基于TongWeb中間件適配改造實戰

東方通 一、東方通[Tong Web] 簡介 ?為了方便地開發、部署、運行和管理Internet上基于三層/多層結構的應用&#xff0c;需要以基于組件的底層技術為基礎&#xff0c;規劃一個整體的應用框架&#xff0c;提供相應的支撐平臺&#xff0c;作為Internet應用的基礎設施&#xff0…

每日一類:Qt GUI開發的基石《QWidget》

深入探索QWidget&#xff1a;Qt GUI開發的基石 在Qt框架中&#xff0c;QWidget類扮演著構建圖形用戶界面&#xff08;GUI&#xff09;的基礎角色。它不僅提供了窗口的基本功能&#xff0c;還允許開發者通過繼承和定制來創建各式各樣的用戶界面元素。本文將詳細介紹QWidget的關…

白酒:傳統釀造工藝與現代科技相結合的創新實踐

在云倉酒莊豪邁白酒的生產過程中&#xff0c;傳統釀造工藝與現代科技的結合是推動產業發展的重要動力。云倉酒莊作為一家注重創新與實踐的酒莊&#xff0c;在這方面進行了許多有益的探索和嘗試。 首先&#xff0c;傳統釀造工藝是云倉酒莊豪邁白酒的靈魂。在長期的生產實踐中&am…

抽絲剝繭!API在互聯網金融領域里大顯身手:深度解鎖三大創新應用場景

&#x1f680; 引言 有這么一位幕后高手&#xff0c;它不顯山露水卻能牽動整個互聯網金融江湖的脈搏&#xff0c;它在無形中編織數據網絡&#xff0c;如同樞紐般連通各方資源&#xff0c;在靜默中推動創新進程&#xff0c;這就是大名鼎鼎的API&#xff08;應用程序接口&#x…

基于ssm學生學籍管理系統設計與實現+vue論文

目 錄 目 錄 I 摘 要 III ABSTRACT IV 1 緒論 1 1.1 課題背景 1 1.2 研究現狀 1 1.3 研究內容 2 2 系統開發環境 3 2.1 vue技術 3 2.2 JAVA技術 3 2.3 MYSQL數據庫 3 2.4 B/S結構 4 2.5 SSM框架技術 4 3 系統分析 5 3.1 可行性分析 5 3.1.1 技術可行性 5 3.1.2 操作可行性 5 3…