【03】基礎知識:typescript中的函數

一、typescript 中定義函數的方法

函數聲明法

function test1(): string {return '返回類型為string'
}function test2(): void {console.log('沒有返回值的方法')
}

函數表達式/匿名函數

const test3 = function(): number {return 1
}

二、typescript 中 函數參數寫法

1、typescript 中定義函數傳參

函數聲明

function getInfo(name: string, age: number): string {// 傳參name為string類型、age為number類型,返回類型為stringreturn `${name} - ${age}`
}getInfo('zhangsan', 20) // zhangsan - 20

函數表達式/匿名函數

const getInfo2 = function(name: string, age: number): string {// 傳參name為string類型、age為number類型,返回類型為stringreturn `${name} - ${age}`
}getInfo2('zhangsan', 18) // zhangsan - 18

2、可選參數

在 es5 中,方法的形參和實參個數可以不一樣;但是在 ts 中必須一樣,如果不一樣就需要配置可選參數。

ts 中 通過【 形參?: 數據類型 】形式定義可選參數,代表該參數在方法調用時可以不傳入。

注意:可選參數必須到參數的最后面,否則ts編譯時會報錯

function getInfo(name: string, age?: number): string {if (age) {return `${name} - ${age}`} else {return `${name} - 年齡未定義`}
}getInfo('zhangsan') // zhangsan - 年齡未定義
getInfo('zhangsan'20) // zhangsan - 20

3、默認參數

創建方法時,可以給參數指定默認值。

function getInfo(name: string, age: number=18): string {return `${name} - ${age}`
}getInfo('zhangsan') // zhangsan - 18
getInfo('zhangsan'20) // zhangsan - 20

4、剩余參數

通過 es6 的 三點運算符,接受形參傳過來的值

function sum (...result: number[]): number{return result.reduce((prev, cur) => {return prev + cur}, 0)
}sum(1, 2, 3, 4) // 10
function sum (a: number, ...result: number[]): number{return result.reduce((prev, cur) => {return prev + cur}, a)
}sum(1, 2, 3, 4) // 10

三、函數重載

javascript 是面向過程編程語言,沒有函數重載的概念

java 中函數重載指的是,兩個或者兩個以上同名函數,但它們的參數不一樣

typescript 中的函數重載指的是,通過為同一個函數提供多個函數類型定義來實現多種功能的目的。

typescript 為了兼容 js 重載的寫法和 java 中有區別。

function getInfo(name: string): string 
function getInfo(age: number): number
function getInfo(str: any): any {if (typeof str === 'string') {return `我叫${str}`} else {return str}
} getInfo('張三') // 我叫張三
getInfo(19) // 19
getInfo(false) // ts編譯報錯
function getInfo(name: string): string 
function getInfo(name: string, age: number): string
function getInfo(name: any, age?: any): any {if (age) {return `我叫${name},年齡是${age}`} else {return `我叫${name}`}
}getInfo('張三', 19) // 我叫張三,年齡是19
getInfo('張三') // 我叫張三
getInfo('zhangsan', true) // ts編譯報錯
getInfo(19) // ts編譯報錯

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

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

相關文章

helm安裝harbor + nerdctl 制作push 鏡像

參考 文章:Helm部署Harbor_helm harbor_風向決定發型丶的博客-CSDN博客 安裝好后使用 nerd containerd對接harbor_containerd 容器 insecure-registries 配置_檸是檸檬的檬的博客-CSDN博客 推送鏡像 Containerd 對接私有鏡像倉庫 Harbor - 知乎 接下來我們來…

麒麟系統相關

創建虛擬機 鏡像下載地址 選擇合適的鏡像,進入引導后注意不要選擇默認的第一條,選擇第二條進入安裝程序。 root密碼修改 使用命令 sudo passwd root 開啟ssh 配置好網絡后發現能ping通,但無法ssh連接,ps -ef | grep ssh 得…

01 qt快速入門

一 qt介紹 1.基本概念 1991年由Qt Company(奇趣)開發的跨平臺C++圖形用戶界面應用程序開發框架,GUI程序和非GUI程序。優點:一套源碼在不同的平臺通過不同的編譯器進行編譯,就可以運行到該平臺上目標機。面向對象的封裝機制來對其接口封裝。 GUI —圖形用戶界面(Graphic…

軟件測試面試題【2023整理版(含答案)】

01、您所熟悉的測試用例設計方法都有哪些?請分別以具體的例子來說明這些方法在測試用例設計工作中的應用。 答:有黑盒和白盒兩種測試種類,黑盒有等價類劃分方法 邊界值分析方法 錯誤推測方法 因果圖方法 判定表驅動分析方法 正交實驗設…

Vue組件之間的傳值匯總

組件之間的傳值 1、父傳子 props 2、父傳子 slot 3、父傳子 不建議用 attrs 4、 子傳父 ref 5、子傳父 emit 6、povide/inject只能在setup的時候用。 7、利用vuex和pinia去實現數據的交互 1、實現代碼App.vue <script setup>import TestProps from ./components/T…

stable-diffusion 模型效果+prompt

摘自個人印象筆記&#xff0c;圖不完整可查看原筆記&#xff1a;https://app.yinxiang.com/fx/55cda0c6-2af5-4d66-bd86-85da79c5574ePrompt運用規則及技巧 &#xff1a; 1. https://publicprompts.art/&#xff08;最適用于OpenArt 線上模型 https://openart.ai/&#xff09;…

【Vue-Router】別名

后臺返回來的路徑名不合理&#xff0c;但多個項目在使用中了&#xff0c;不方便改時可以使用別名。可以有多個或一個。 First.vue <template><h1>First Seciton</h1> </template>Second.vue&#xff0c;Third.vue代碼同理 UserSettings.vue <tem…

R語言生存分析(機器學習)(2)——Enet(彈性網絡)

彈性網絡&#xff08;Elastic Net&#xff09;:是一種用于回歸分析的統計方法&#xff0c;它是嶺回歸&#xff08;Ridge Regression&#xff09;和lasso回歸&#xff08;Lasso Regression&#xff09;的結合&#xff0c;旨在克服它們各自的一些限制。彈性網絡能夠同時考慮L1正則…

mysql 索引 區分字符大小寫

mysql 建立索引&#xff0c;特別是unique索引&#xff0c;是跟字符集、字符排序規則有關的。 對于utf8mb4_0900_ai_ci來說&#xff0c;0900代表Unicode 9.0的規范&#xff0c;ai表示accent insensitivity&#xff0c;也就是“不區分音調”&#xff0c;而ci表示case insensitiv…

wsl2安裝docker引擎(Install Docker Engine on Debian)

安裝 1.卸載舊版本 在安裝 Docker 引擎之前&#xff0c;您必須首先確保卸載任何沖突的軟件包。 發行版維護者在他們的存儲庫。必須先卸載這些軟件包&#xff0c;然后才能安裝 Docker 引擎的正式版本。 要卸載的非官方軟件包是&#xff1a; docker.iodocker-composedocker-…

問道管理:旅游酒店板塊逆市拉升,桂林旅游、華天酒店漲停

游覽酒店板塊14日盤中逆市拉升&#xff0c;到發稿&#xff0c;桂林游覽、華天酒店漲停&#xff0c;張家界漲超8%&#xff0c;君亭酒店漲超5%&#xff0c;眾信游覽、云南游覽漲逾4%。 音訊面上&#xff0c;8月10日&#xff0c;文旅部辦公廳發布康復出境團隊游覽第三批名單&#…

Profibus-DP轉modbus RTU網關modbus rtu和tcp的區別

捷米JM-DPM-RTU網關在Profibus總線側實現主站功能&#xff0c;在Modbus串口側實現從站功能。可將ProfibusDP協議的設備&#xff08;如&#xff1a;EH流量計、倍福編碼器等&#xff09;接入到Modbus網絡中&#xff1b;通過增加DP/PA耦合器&#xff0c;也可將Profibus PA從站接入…

【計算機網絡】Udp詳解

前言 上幾文章我們講解了應用層協議Http和Https&#xff0c;要知道應用層協議有很多&#xff0c;這些都是程序員自己定制的&#xff0c;而真正要傳輸的時候&#xff0c;是要在操作系統的傳輸層進行的&#xff0c;今天我們就來學習一下傳輸層協議Udp的 標識一個通信 要進行跨…

MySQL 深度分頁優化

MySQL 深度分頁優化 理解總結&#xff1a; 分頁使用limit &#xff0c;前提是要排序好的數據&#xff0c;這時候&#xff0c;就推薦使用帶索引的字段排序&#xff0c;因為索引是天然有序的&#xff0c;不需要像是無序的字段一樣&#xff0c;全表掃描&#xff0c;如果太大的話…

“深入探究JVM:解密Java虛擬機的工作原理“

標題&#xff1a;深入探究JVM&#xff1a;解密Java虛擬機的工作原理 摘要&#xff1a;本文將深入探究Java虛擬機&#xff08;JVM&#xff09;的工作原理&#xff0c;包括JVM的組成部分、類加載過程、運行時數據區域、垃圾回收機制以及即時編譯器等。通過解密JVM的工作原理&…

js加密解決方案1:在AutoJS中實現Promise的必要性、好處與缺點

AutoJS是一款強大的Android自動化工具&#xff0c;可以幫助用戶編寫腳本來實現手機自動化操作。然而&#xff0c;它的加密代碼只支持ES5語法&#xff0c;不支持許多ES6的新特性&#xff0c;如Promise等功能。如果想在ES5語法環境中使用ES6的一些新特性&#xff0c;就需要自己實…

汽車上的電源模式詳解

① 一般根據鑰匙孔開關的位置來確定整車用電類別&#xff0c;汽車上電源可以分為常電&#xff0c;IG電&#xff0c;ACC電 1&#xff09;常電。常電表示蓄電池和發電機輸出直接供電&#xff0c;即使點火開關在OFF檔時&#xff0c;也有電量供應。一般來講模塊的記憶電源及需要在車…

Python系統學習1-7-字典

一、字典 1、概念及內存圖 列表&#xff1a;由一系列變量組成的可變序列容器字典&#xff1a;由一系列鍵值對組成的可變散列容器字典優勢&#xff1a;利用&#xff08;內存&#xff09;空間&#xff0c;換取&#xff08;CPU查找&#xff09;時間 鍵key 必須唯一且為不…

hbase 報錯 Master passed us a different hostname to use; was=

原因 wsl2的 /etc/hosts 配置的不兼容,我這里是ubuntu22 命令行輸入hostname 看輸出什么,比如輸出 aaa 那么替換/etc/hosts 127.0.0.1 aaa

vb+sql醫院門診管理系統設計與系統

摘要 信息時代已經來臨,計算機應用于醫院的日常管理,為醫院的現代化帶來了從未有過的動力和機遇,為醫療衛生領域的發展提供了無限的潛力。采用計算機管理信息系統已成為醫院管理科學化和現代化的標志,給醫院帶來了明顯的經濟效益和社會效益。 本文介紹了數據庫管理系統的…