TypeScript 函式可選引數和預設引數
JavaScript中的函式引數是非常靈活的,實參和形參的數目可以不必相同。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼function func(a,b){ // code } func(1);
函式宣告規定了兩個引數,實際呼叫卻傳遞了一個引數。
TypeScript對於引數的要求則相對嚴格,程式碼例項如下:
[typescript] 純文字檢視 複製程式碼function func(webName: string, age: 4){ // code } func("螞蟻部落",4);//程式碼正確 func("螞蟻部落",4,"青島市南區");//程式碼錯誤 func(5,4);//程式碼錯誤 func("螞蟻部落");//程式碼錯誤
TypeScript函式傳參的一個基本規則總結:給一個函式的引數個數必須與函式期望的引數個數一致。
為了應用的靈活性,TypeScript函式增加了可選引數和預設引數,下面分別做一下介紹:
(1).可選引數:
[typescript] 純文字檢視 複製程式碼function func(webName: string, age?: 4){ // code } func("螞蟻部落",4);//程式碼正確 func("螞蟻部落",4,"青島市南區");//程式碼錯誤 func(5,4);//程式碼錯誤 func("螞蟻部落");//程式碼錯誤
在引數名稱後面加一個問號(?)可以規定此引數為可選引數,那麼此引數可以省略。
特別說明:可選引數必須位於必需引數後面。
(2).預設引數:
可以為引數提供一個預設值,當沒有傳遞引數值或傳遞的值是undefined時,就使用預設引數值。
程式碼例項如下:
[typescript] 純文字檢視 複製程式碼function func(webName: string, age= 4){ // code } func("螞蟻部落")//age引數將使用預設值4 func("螞蟻部落",5)//age引數預設值不會生效,使用傳遞的值 func("螞蟻部落",undefined)//傳遞undefined時,使用預設引數值
與可選引數不同的是,帶預設值的引數不需要放在必須引數的後面。
如果帶預設值的引數出現在必須引數前面,使用者必須明確的傳入 undefined值來獲得預設值。
特別說明:
可選引數與末尾的預設引數共享引數型別,程式碼如下:
[typescript] 純文字檢視 複製程式碼function func(webName: string, age= 4):string{ // code } function func(webName: string, age?:number):string{ // code }
共享同樣型別(webName: string, age?: number) => string,預設引數的預設值消失,保留一個可選引數資訊。
strictNullChecks:true的影響:
如果在tsconfig.json檔案中配置"strictNullChecks":true,那麼可選引數會被自動地加上| undefined。
程式碼例項如下:
[typescript] 純文字檢視 複製程式碼function func(x: number, y?: number) { return x + (y || 0); } func(1, 2); func(1); func(1, undefined);
截圖如下:
相關文章
- 3.3.2 函式的預設引數和佔位引數 函式過載函式
- 函式定義、函式的引數、函式的預設引數函式
- php函式之如何用預設引數和可變長度引數方式傳遞?PHP函式
- Python 函式(預設引數)Python函式
- javascript為函式設定預設引數JavaScript函式
- C#中命名引數和可選引數C#
- PHP函式,引數,可變參函式.PHP函式
- javascript給函式引數設定預設值JavaScript函式
- C++行內函數、函式過載與函式預設引數C++函數函式
- Go函式接收可變引數Go函式
- Python 函式(可變引數)Python函式
- Swift語言中為外部引數設定預設值可變引數常量引數變數引數輸入輸出引數Swift變數
- 函式引數 引數定義函式型別函式型別
- 函式基礎和函式引數函式
- 全網最適合入門的物件導向程式設計教程:48 Python函式方法與介面-位置引數、預設引數、可變引數和關鍵字引數物件程式設計Python函式
- PHP 函式可變數量的引數列表PHP函式變數
- Python函式引數預設值的陷阱和原理深究Python函式
- Dart小知識 -- 函式(Function) && 可選引數(Optional parameters)Dart函式Function
- 遞迴函式,可變引數列表遞迴函式
- C++ 函式的可變引數C++函式
- C可變引數函式 實現函式
- python疑問5:位置引數,預設引數,可變引數,關鍵字引數,命名關鍵字引數區別Python
- ES6 筆記 Rest 引數和 預設引數筆記REST
- 函式的呼叫方式和引數函式
- php實現函式可變引數列表PHP函式
- 深入解析 ES6:Rest 引數和引數預設值REST
- 關於C++引用做為函式引數和指標作為函式引數C++函式指標
- Day10 函式基礎+函式三種定義形式 + 函式的返回值、物件和引數 + 可變長引數函式物件
- 函式、引數、解構函式
- 函式引數詳解函式
- javascript函式引數和函式內同名變數的關係JavaScript函式變數
- golang學習之路之函式可變引數Golang函式
- 第 8 節:函式-函式定義和引數函式
- ES6設定函式預設引數簡單介紹函式
- c# 方法引數(傳值,傳引用,ref,out,params,可選引數,命名引數)C#
- Swift4.0 函式引數(內部外部引數和下劃線在函式的作用)Swift函式
- Python之在函式中使用列表作為預設引數Python函式
- 輕鬆學習 JavaScript (3):函式中的預設引數JavaScript函式