- TypeScript 基礎
- TypeScript - 首頁
- TypeScript - 路線圖
- TypeScript - 概述
- TypeScript - 環境搭建
- TypeScript - 基本語法
- TypeScript vs. JavaScript
- TypeScript - 特性
- TypeScript - 變數
- TypeScript - let & const
- TypeScript - 運算子
- TypeScript 基本型別
- TypeScript - 型別
- TypeScript - 型別註解
- TypeScript - 型別推斷
- TypeScript - 數字
- TypeScript - 字串
- TypeScript - 布林值
- TypeScript - 陣列
- TypeScript - 元組
- TypeScript - 列舉
- TypeScript - any
- TypeScript - never
- TypeScript - 聯合型別
- TypeScript - 字面量型別
- TypeScript - 符號
- TypeScript - null vs. undefined
- TypeScript - 類型別名
- TypeScript 控制流
- TypeScript - 決策
- TypeScript - if 語句
- TypeScript - if else 語句
- TypeScript - 巢狀 if 語句
- TypeScript - switch 語句
- TypeScript - 迴圈
- TypeScript - for 迴圈
- TypeScript - while 迴圈
- TypeScript - do while 迴圈
- TypeScript 函式
- TypeScript - 函式
- TypeScript - 函式型別
- TypeScript - 可選引數
- TypeScript - 預設引數
- TypeScript - 匿名函式
- TypeScript - Function 建構函式
- TypeScript - rest 引數
- TypeScript - 引數解構
- TypeScript - 箭頭函式
- TypeScript 介面
- TypeScript - 介面
- TypeScript - 介面擴充套件
- TypeScript 類和物件
- TypeScript - 類
- TypeScript - 物件
- TypeScript - 訪問修飾符
- TypeScript - 只讀屬性
- TypeScript - 繼承
- TypeScript - 靜態方法和屬性
- TypeScript - 抽象類
- TypeScript - 存取器
- TypeScript - 鴨子型別
- TypeScript 高階型別
- TypeScript - 交叉型別
- TypeScript - 型別保護
- TypeScript - 型別斷言
- TypeScript 型別操作
- TypeScript - 從型別建立型別
- TypeScript - keyof 型別運算子
- TypeScript - typeof 型別運算子
- TypeScript - 索引訪問型別
- TypeScript - 條件型別
- TypeScript - 對映型別
- TypeScript - 模板字面量型別
- TypeScript 泛型
- TypeScript - 泛型
- TypeScript - 泛型約束
- TypeScript - 泛型介面
- TypeScript - 泛型類
- TypeScript 其他
- TypeScript - 三斜槓指令
- TypeScript - 名稱空間
- TypeScript - 模組
- TypeScript - 環境宣告
- TypeScript - 裝飾器
- TypeScript - 型別相容性
- TypeScript - Date 物件
- TypeScript - 迭代器和生成器
- TypeScript - Mixin
- TypeScript - 實用程式型別
- TypeScript - 裝箱和拆箱
- TypeScript - tsconfig.json
- 從 JavaScript 到 TypeScript
- TypeScript 有用資源
- TypeScript - 快速指南
- TypeScript - 有用資源
- TypeScript - 討論
TypeScript - 預設引數
預設引數
在 TypeScript 中,我們可以為函式引數賦予預設值。這些引數可以顯式地傳遞值,被稱為預設引數。
當函式呼叫時缺少引數或引數值為 undefined 時,函式將使用這些預設初始化值。
語法
TypeScript 預設引數的語法如下:
function functionName(param1[:type], param2[:type] = defaultValue)
這裡函式 functionName() 接受兩個引數 - param1 和 param2。第一個引數 param1 是必需引數,而第二個引數 param2 是預設引數。param2 初始化為預設值 defaultValue。當 functionName() 函式呼叫時未傳遞 param2 的值時,defaultValue 將用作 param2 的值。
讓我們透過一些 TypeScript 示例程式來了解函式預設引數。
示例:簡單的預設引數
讓我們看下面的例子:
function greet(name: string, age: number = 30){
console.log(`Hi ${name}, your age is ${age}.`)
}
greet('John', 50);
greet('John');
在上面的例子中,引數 age 是一個預設引數,初始化值為 30。引數 name 是必需引數。
編譯後,它將生成以下 JavaScript 程式碼。(此處應插入生成的JavaScript程式碼)
function greet(name, age = 30) {
console.log(`Hi ${name}, your age is ${age}.`);
}
greet('John', 50);
greet('John');
輸出 (此處應插入輸出結果)
Hi John, your age is 50. Hi John, your age is 30.
示例:必需引數後的預設引數
預設引數應該在函式定義中位於必需引數之後
在下面的例子中,我們將預設引數 y 放置在必需引數 x 之後。(此處應插入程式碼)
function sum(x: number, y: number=10): number{
return x + y;
}
console.log(sum (20,30));
console.log(sum (30));
編譯後,它將生成以下 JavaScript 程式碼。(此處應插入生成的JavaScript程式碼)
function sum(x, y = 10) {
return x + y;
}
console.log(sum(20, 30));
console.log(sum(30));
輸出結果如下:(此處應插入輸出結果)
50 40
示例:必需引數前的預設引數
但是,如果將預設引數放在必需引數之前,並且在不為預設引數傳遞值的情況下呼叫函式,則會顯示錯誤。讓我們看下面的例子:(此處應插入程式碼)
function sum(x: number=10, y:number):number{
return x + y;
}
console.log(sum(20,30)); // 50
console.log(sum(30)); // NaN
上面的 TypeScript 程式將顯示以下錯誤:(此處應插入錯誤資訊)
Expected 2 arguments, but got 1.
併產生以下輸出:(此處應插入輸出結果)
50 NaN
示例:將函式作為預設引數的值傳遞
在下面的例子中,我們將引數 b 初始化為 getNum() 函式作為預設值。getNum() 函式返回數字 10。當第二個引數缺失時,getNum() 函式返回的值將用作函式內部引數的值。(此處應插入程式碼)
function getNum(): number {
return 10;
}
function mul(a: number, b = getNum()) {
return a * b;
}
console.log(mul(20, 5));
console.log(mul(20))
輸出 (此處應插入輸出結果)
100 200
可選引數與預設引數
我們可以不傳遞預設引數的值來呼叫函式。我們也可以不傳遞可選引數的值來呼叫函式。
示例:預設引數
在下面的例子中,age 引數的預設值為 30。這意味著如果您不為 age 引數傳遞值,則函式將對 age 使用預設值 30。(此處應插入程式碼)
function greet(name: string, age: number = 30){
console.log(`Hi ${name}, your age is ${age}.`);
}
greet('John', 50);
greet('John');
編譯後,它將生成以下 JavaScript 程式碼。(此處應插入生成的JavaScript程式碼)
function greet(name, age = 30) {
console.log(`Hi ${name}, your age is ${age}.`);
}
greet('John', 50);
greet('John');
上述示例程式碼的輸出如下:(此處應插入輸出結果)
Hi John, your age is 50. Hi John, your age is 30.
示例:可選引數
在下面的例子中,age 引數是可選的。這意味著您可以不為 age 引數傳遞值來呼叫 greet 函式。當不傳遞 age 引數的值時。(此處應插入程式碼)
function greet(name: string, age?:number){
if (age) {
console.log(`Hello ${name}, you are ${age} years old`);
}
else{
console.log(`Hello ${name}`);
}
}
greet ('Shahid', 35);
greet ('Shahid');
編譯後,它將生成以下 JavaScript 程式碼。(此處應插入生成的JavaScript程式碼)
function greet(name, age) {
if (age) {
console.log(`Hello ${name}, you are ${age} years old`);
}
else {
console.log(`Hello ${name}`);
}
}
greet('Shahid', 35);
greet('Shahid');
上述程式碼的輸出如下:(此處應插入輸出結果)
Hello Shahid, you are 35 years old Hello Shahid
我們不能同時宣告一個引數為可選和預設。
function greet(name: string, age?: number = 30){
console.log(`Hi ${name}, your age is ${age}.`);
}
上面的程式將顯示以下錯誤:(此處應插入錯誤資訊)
Parameter cannot have question mark and initializer.