Anonymous function là functions định nghĩa mà không có tên. Đây là function được tạo ra tại thời điểm runtime.
– Anonymous function được định nghĩa như một function expression
– Một function trong typescript được định nghĩa bằng cách sử dụng function declaration và function expression
– Với cách dùng function declaration thì function được đặt tên. Trong khi đó một anonymous function sử dụng một function expression.
Function expression có thể được đặt tên nhưng nếu nó không có tên thì nó được gọi là anonymous function.
Ví dụ:
let fn: (param1: string, param2: string) => void;
fn = function (param1: string, param2: string): void {
// Code for anonymous function
console.log(param1);
console.log(param2);
};
fn("Javascript", "TypeScript");
Giải thích: code bên trên triển khai một function không có tên
Định nghĩa Anonymous Function dùng Arrow Function
Cách thứ nhất: đầu tiên khai báo function type sau đó gán nó với một arrow function
let a: () => void; // Declare function type
// assign to arrow function
a = () => {
console.log("This is an arrow function !");
};
Cách thứ 2: gán trực tiếp arrow function cho một variable
let b = () => {
console.log("this is arrow function !");
};
Cách thứ 3: vừa khai báo function tiếp và gán cho arrow function ngay sau đó
let c: (v: number) => number = (v: number): number => {
return 10 * v;
};
Sử dụng Anonymous Function như một Callback Function
Ví dụ:
let numbers: Array<number> = [90, 64, 323, 322, 588, 668, 9, 121, 34, 1, 2];
numbers.sort((v1: number, v2: number): number => {
return v1 < v2 ? 1 : -1;
});
console.log("Sorted list: " + numbers);
Giải thích code: code trên có nhiệm vụ sắp sếp các phần tử của một mảng theo thứ tự giảm dần thông qua một phương thức có sẵn là sort(). Trong sort có một tham số là một callback function dùng cho việc sắp xếp mảng.
Định nghĩa phương thức sort như sau:
/**
* Sorts an array in place.
* This method mutates the array and returns a reference to the same array.
* @param compareFn Function used to determine the order of the elements. It is expected to return
* a negative value if the first argument is less than the second argument, zero if they're equal, and a positive
* value otherwise. If omitted, the elements are sorted in ascending, ASCII character order.
* ```ts
* [11,2,22,1].sort((a, b) => a - b)
* ```
*/
sort(compareFn?: (a: T, b: T) => number): this;
Kết quả sau khi sắp xếp
[ 668, 588, 323, 322, 121, 90, 64, 34, 9, 2, 1 ]
Tóm tắt
Chúng ta có thể tạo anonymous function bằng 2 cách, một là dùng function keyword và một là dùng arrow function. Tuy nhiên arrow function là cách thường dùng nhất vì tính đơn giản dễ nhìn.