
- 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 - 函式構造器
- 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 - Mixins
- TypeScript - 實用程式型別
- TypeScript - 裝箱和拆箱
- TypeScript - tsconfig.json
- 從 JavaScript 到 TypeScript
- TypeScript 有用資源
- TypeScript - 快速指南
- TypeScript - 有用資源
- TypeScript - 討論
TypeScript - 箭頭函式
箭頭函式是 TypeScript 中編寫匿名函式的簡潔方式。它們在 ES6(ECMAScript 2015)中引入。與傳統的函式宣告相比,它們提供了更短、更易讀的語法。箭頭函式也稱為 lambda 函式。Lambda 指的是程式設計中的匿名函式。
語法
您可以使用胖箭頭(=>)定義箭頭函式。胖箭頭用於分隔函式引數和函式體(語句)。
(param1, param2, ..., paramN) => statement
箭頭函式有三個部分:
引數 - 函式可以選擇具有引數,param1、param2、...、paramN。
胖箭頭表示法/lambda 表示法(=>) - 它也稱為“轉到”運算子。
語句 - 表示函式的指令集
示例
讓我們透過一些 TypeScript 中的示例來了解箭頭函式/lambda 函式:
示例:具有單個語句的箭頭函式
我們可以按如下方式編寫具有單個語句的箭頭函式:
(x: number, y: number): number => x +y;
對於單個語句,可以選擇不寫 return 關鍵字來返回值和括號(花括號)。但如果使用括號,則需要編寫 return 關鍵字才能返回值。
(x: number, y: number): number => {return x +y;}
讓我們看下面的例子:
const add = (x: number, y: number): number => x +y; console.log(add(20,30));
編譯後,它將生成以下 JavaScript 程式碼。
const add = (x, y) => x + y; console.log(add(20, 30));
它將產生以下結果:
50
示例:具有多個語句的箭頭函式
您可以使用花括號編寫多個語句。您還需要編寫 return 語句才能返回值。
在下面的示例中,我們定義了一個接受兩個引數並返回其乘積的箭頭函式。
const multiply = (x: number, y: number): number => { let res: number = x * y; return res; }; console.log(multiply(5,6));
編譯後,它將生成以下 JavaScript 程式碼。
const multiply = (x, y) => { let res = x * y; return res; }; console.log(multiply(5, 6));
它將產生以下輸出:
30
示例:沒有引數的箭頭函式
箭頭函式的引數是可選的。
在下面的示例中,我們定義了一個不帶引數並返回字串值的箭頭函式。
const greet = () => { return "Hello World!";} console.log(greet());
編譯後,它將生成相同的 JavaScript 程式碼。
上面程式碼示例的輸出如下:
Hello World!
示例:具有單個引數的箭頭函式
以下示例顯示了一個接受單個引數並返回該引數與 10 的和的箭頭函式。
const add = (x: number): number => {return x + 10;} console.log(add(5));
編譯後,它將生成以下 JavaScript 程式碼。
const add = (x) => { return x + 10; }; console.log(add(5));
上面程式碼示例的輸出如下:
15
示例:具有多個引數的箭頭函式
在下面的示例中,我們定義了一個接受三個引數並返回其和的箭頭函式。
let sum: number; const add = (a: number, b: number, c: number) => { sum = a + b + c; return sum; }; let res = add(10, 30, 45); console.log("The result is: " + res);
編譯後,它將生成以下 JavaScript 程式碼。
let sum; const add = (a, b, c) => { sum = a + b + c; return sum; }; let res = add(10, 30, 45); console.log("The result is: " + res);
上面程式碼示例的輸出如下:
The result is: 85
示例:具有預設引數的箭頭函式
在下面的示例中,我們將引數的預設值傳遞給箭頭函式。當您不傳遞相應的引數值時,這些預設值將在函式體內部使用。
const mul = (a = 10, b = 15) => a * b; console.log("mul(5, 8) = " + mul(5, 8)); console.log("mul(6) = " + mul(6)); console.log("mul() = " + mul());
編譯後,它將生成相同的 JavaScript 程式碼。
上面程式碼示例的輸出如下:
mul(5, 8) = 40 mul(6) = 90 mul() = 150
箭頭函式的應用
現在讓我們討論一些 TypeScript 中箭頭函式的應用示例。
示例:箭頭函式作為其他函式中的回撥函式
箭頭函式(Lambda 表示式)也可用作函式中的回撥,例如陣列方法(例如,map、filter、reduce)。以下是一個演示它們與“map”方法一起使用的示例:
const numbers = [1, 2, 3, 4, 5]; const squaredNumbers = numbers.map(x => x * x); console.log(`Original array: ${numbers}`); console.log(`Squared array: ${squaredNumbers}`);
編譯後,它將生成相同的 JavaScript 程式碼。
上面程式碼示例的輸出如下:
Original array: 1,2,3,4,5 Squared array: 1,4,9,16,25
示例:類中的箭頭函式
箭頭函式(Lambda 表示式)可以用作 TypeScript 中的類方法或物件屬性。以下是一個包含作為 lambda 表示式組成的方法的類的示例:
class Calculator { add = (x: number, y: number, z: number): number => x + y + z; } const obj = new Calculator(); console.log(`The result is: ${obj.add(4, 3, 2)}`);
編譯後,它將生成以下 JavaScript 程式碼。
class Calculator { constructor() { this.add = (x, y, z) => x + y + z; } } const obj = new Calculator(); console.log(`The result is: ${obj.add(4, 3, 2)}`);
它將產生以下輸出:
The result is: 9
示例:實現高階函式
高階函式(接受一個或多個函式作為引數和/或返回一個函式作為結果的函式)可以使用 TypeScript 中的 lambda 表示式方便地定義。
const applyOp = ( x: number, y: number, operation: (a: number, b: number) => number ) => { return operation(x, y); }; const result1 = applyOp(10, 20, (a, b) => a + b); console.log(result1); const result2 = applyOp(10, 20, (a, b) => a * b); console.log(result2);
編譯後,它將生成以下 JavaScript 程式碼。
const applyOp = (x, y, operation) => { return operation(x, y); }; const result1 = applyOp(10, 20, (a, b) => a + b); console.log(result1); const result2 = applyOp(10, 20, (a, b) => a * b); console.log(result2);
上面程式碼示例的輸出如下:
30 200
箭頭函式在編寫匿名函式方面非常有用。