# TypeScript - Hàm vô danh: Hướng dẫn cho người mới bắt đầu

Xin chào các bạn, những ngôi sao lập trình tương lai! Hôm nay, chúng ta sẽ lặn sâu vào thế giới thú vị của TypeScript và khám phá một khái niệm có thể听起来有点神秘 ban đầu: Hàm vô danh. Đừng lo nếu nó听起来 giống như mật danh của một điệp viên - đến cuối bài hướng dẫn này, bạn sẽ sử dụng các hàm này như một chuyên gia!

## Hàm vô danh là gì?

Trước khi chúng ta nhảy vào, hãy phân tích xem chúng tôi muốn nói gì bằng "hàm vô danh." Trong thế giới lập trình, chúng ta thường đặt tên cho các hàm của mình, như "calculateTotal" hoặc "sendEmail." Nhưng đôi khi, chúng ta tạo ra các hàm không cần có tên - chúng giống như những người hùng bịt mặt trong thế giới mã hóa. Những kỳ quan vô danh này là những gì chúng ta gọi là hàm vô danh.

Hãy tưởng tượng bạn đang ở một buổi tiệc bịt mặt. Mọi người đều đeo những chiếc mặt nạ lộng lẫy, và bạn không thể thấy khuôn mặt hoặc biết tên của họ. Nhưng họ vẫn có thể nhảy, nói chuyện và vui vẻ. Đó là điều mà hàm vô danh làm trong mã của chúng ta - chúng thực hiện các nhiệm vụ mà không cần một giới thiệu chính thức!

Bây giờ, hãy nhìn vào các cách khác nhau để tạo ra các hàm bí ẩn này trong TypeScript.

## Định nghĩa hàm vô danh bằng từ khóa 'function'

Cách đầu tiên để tạo một hàm vô danh là sử dụng từ khóa 'function' thân quen. Dưới đây là cách nó trông như thế nào:

```typescript
let greet = function(name: string) {
    console.log("Hello, " + name + "!");
};

greet("Alice"); // Output: Hello, Alice!

Trong ví dụ này, chúng ta đang tạo một hàm chào đón ai đó. Hãy phân tích nó:

TypeScript - Anonymous Functions

  1. Chúng ta bắt đầu với let greet =. Đây là chúng ta đang tạo một biến叫做 'greet'.
  2. Sau dấu bằng, chúng ta có function(name: string) { ... }. Đây là hàm vô danh của chúng ta.
  3. Trong dấu ngoặc { }, chúng ta có thân hàm - điều mà hàm thực sự làm.
  4. Chúng ta sau đó có thể sử dụng hàm này bằng cách gọi greet("Alice").

Đó giống như chúng ta đã tạo ra một robot thân thiện có thể chào đón bất kỳ ai, và chúng ta đã đưa cho robot mật danh 'greet'!

Định nghĩa hàm vô danh sử dụng cú pháp hàm mũi tên

Bây giờ, hãy nhìn vào cách viết hàm vô danh hiện đại và ngắn gọn hơn - cú pháp hàm mũi tên. Nó giống như chiếc xe thể thao của thế giới hàm: tinh tế, nhanh nhẹn và trông tuyệt vời!

let add = (a: number, b: number): number => {
    return a + b;
};

console.log(add(5, 3)); // Output: 8

Dưới đây là những gì đang xảy ra:

  1. Chúng ta tạo một biến叫做 'add'.
  2. Phần (a: number, b: number) xác định các tham số mà hàm của chúng ta nhận.
  3. : number sau dấu ngoặc xác định rằng hàm của chúng ta sẽ trả về một số.
  4. => là điều làm cho nó thành một hàm mũi tên (nó trông giống như một mũi tên, phải không?).
  5. Trong { }, chúng ta có thân hàm.

Chúng ta có thể làm cho nó ngắn hơn cho các hàm đơn giản:

let multiply = (a: number, b: number): number => a * b;

console.log(multiply(4, 6)); // Output: 24

Trong trường hợp này, chúng ta đã loại bỏ { } và từ khóa return. Đó giống như hàm của chúng ta đang nói, "Tôi rất đơn giản, tôi không cần tất cả những符号 đó!"

Sử dụng hàm vô danh jako hàm callback

Bây giờ, hãy xem nơi hàm vô danh thực sự tỏa sáng - như hàm callback. Một hàm callback là một hàm mà chúng ta truyền cho một hàm khác làm đối số. Nó giống như nói với một người bạn, "Hey, khi bạn hoàn thành nhiệm vụ của mình, hãy làm điều này cho tôi."

Hãy nhìn vào một ví dụ sử dụng hàm setTimeout:

setTimeout(() => {
    console.log("This message will appear after 2 seconds!");
}, 2000);

Trong đoạn mã này:

  1. setTimeout là một hàm chờ một khoảng thời gian xác định trước trước khi làm điều gì đó.
  2. Đối số đầu tiên là hàm vô danh của chúng ta, viết dưới dạng hàm mũi tên.
  3. Đối số thứ hai (2000) là số milliseconds để chờ (2 giây).

Đó giống như đặt một计时器 và nói, "Khi bạn báo hiệu, hiển thị thông báo này!"

Dưới đây là một ví dụ khác sử dụng các phương thức mảng:

let numbers = [1, 2, 3, 4, 5];

let doubledNumbers = numbers.map((num) => num * 2);

console.log(doubledNumbers); // Output: [2, 4, 6, 8, 10]

Trong trường hợp này:

  1. Chúng ta có một mảng các số.
  2. Chúng ta sử dụng phương thức map, amely áp dụng một hàm cho mỗi phần tử của mảng.
  3. Hàm vô danh của chúng ta (num) => num * 2 gấp đôi mỗi số.
  4. Kết quả là một mảng mới với tất cả các số đã được gấp đôi.

Đó giống như chúng ta đã tạo ra một máy móc mà mỗi số, nhân nó lên hai, và đặt nó vào một hộp mới!

Kết luận

Và thế là bạn đã có nó, các bạn! Chúng ta đã揭开了 hàm vô danh bí ẩn trong TypeScript. Nhớ rằng, các hàm này giống như những精灵 giúp đỡ trong mã của bạn - chúng làm công việc của mình mà không cần một thẻ tên chính thức.

Dưới đây là một tóm tắt nhanh về các phương pháp chúng ta đã học, được trình bày trong một bảng tiện lợi:

Phương pháp Cú pháp Ví dụ
Từ khóa Function let funcName = function(params) { ... } let greet = function(name: string) { console.log("Hello, " + name); }
Hàm mũi tên (multi-line) let funcName = (params) => { ... } let add = (a: number, b: number) => { return a + b; }
Hàm mũi tên (single-line) let funcName = (params) => expression let multiply = (a: number, b: number) => a * b;
Làm Callback someFunction(() => { ... }) setTimeout(() => { console.log("Time's up!"); }, 1000);

Thực hành sử dụng các phương pháp này, và sớm bạn sẽ tạo ra các hàm vô danh như một ninja lập trình! Nhớ rằng, trong lập trình, cũng như trong cuộc sống, đôi khi những lực lượng mạnh mẽ nhất là những người làm việc sau hậu trường. Chúc bạn lập trình vui vẻ!

Credits: Image by storyset