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函式
- C++行內函數、函式過載與函式預設引數C++函數函式
- Go函式接收可變引數Go函式
- 全網最適合入門的物件導向程式設計教程:48 Python函式方法與介面-位置引數、預設引數、可變引數和關鍵字引數物件程式設計Python函式
- 函式引數 引數定義函式型別函式型別
- 函式基礎和函式引數函式
- PHP 函式可變數量的引數列表PHP函式變數
- Dart小知識 -- 函式(Function) && 可選引數(Optional parameters)Dart函式Function
- 遞迴函式,可變引數列表遞迴函式
- python疑問5:位置引數,預設引數,可變引數,關鍵字引數,命名關鍵字引數區別Python
- 函式的呼叫方式和引數函式
- Day10 函式基礎+函式三種定義形式 + 函式的返回值、物件和引數 + 可變長引數函式物件
- Python之在函式中使用列表作為預設引數Python函式
- Python函式/動態引數/關鍵字引數Python函式
- 第 8 節:函式-函式定義和引數函式
- python---函式引數、變數Python函式變數
- 函式、引數、解構函式
- 函式引數詳解函式
- golang學習之路之函式可變引數Golang函式
- Javascript函式引數求值——Thunk函式JavaScript函式
- c# 方法引數(傳值,傳引用,ref,out,params,可選引數,命名引數)C#
- 07:函式之函式的引數和返回值函式
- c#基礎-5.變長引數和引數預設值C#
- 預設建構函式、引數化建構函式、複製建構函式、解構函式函式
- c++函式引數和返回值C++函式
- Swift 呼叫 Objective-C 的可變引數函式SwiftObject函式
- Python函式引數總結Python函式
- JavaScript函式傳遞引數JavaScript函式
- 函式的引數傳遞函式
- 陣列作為函式引數陣列函式
- 程式中的函式引數函式
- 函式中引數傳值函式
- ES6函式引數函式
- python函式變長引數Python函式
- 04-預設引數
- C++預設引數C++
- Python函式的位置引數、關鍵字引數精講Python函式