TypeScript - Câu lệnh Switch: Hướng dẫn cho người mới bắt đầu

Xin chào bạn, ngôi sao lập trình tương lai! Hôm nay, chúng ta sẽ cùng khám phá một trong những cấu trúc điều khiển 流程 hữu ích nhất trong TypeScript: câu lệnh switch. Đừng lo lắng nếu bạn chưa từng viết một dòng mã nào trước đây - tôi sẽ hướng dẫn bạn từng bước một, giống như tôi đã làm cho hàng trăm học viên trong những năm dạy học của mình. Vậy, hãy lấy một cốc đồ uống yêu thích của bạn, và chúng ta cùng bắt đầu nhé!

TypeScript - Switch Statement

Câu lệnh Switch là gì?

Trước khi chúng ta đi vào chi tiết, hãy hiểu câu lệnh switch là gì và tại sao nó lại hữu ích. Hãy tưởng tượng bạn là một nhân viên phục vụ trong một nhà hàng. Một khách hàng đến và đặt một món ăn. Tùy thuộc vào món ăn họ đặt, bạn cần đi đến các站台 khác nhau trong nhà bếp. Đó chính xác là điều mà câu lệnh switch làm trong lập trình - nó nhận một giá trị và quyết định thực thi mã nào dựa trên giá trị đó.

Cú pháp: C công thức cho câu lệnh Switch

Bây giờ, hãy cùng nhìn vào cú pháp của câu lệnh switch. Hãy nghĩ về điều này như là công thức mà chúng ta sẽ theo để tạo ra các câu lệnh switch của riêng mình.

switch (biểu thức) {
case giá trị1:
// mã cần thực thi
break;
case giá trị2:
// mã cần thực thi
break;
...
default:
// mã cần thực thi nếu không có case nào khớp
}

Hãy phân tích này:

  1. switch: Từ khóa này cho TypeScript biết chúng ta đang bắt đầu một câu lệnh switch.
  2. (biểu thức): Đây là giá trị chúng ta đang kiểm tra.
  3. case giá trị1:: Nếu biểu thức khớp với giá trị này, mã dưới nó sẽ được thực thi.
  4. break: Điều này cho TypeScript biết chúng ta đã hoàn thành với case này và thoát khỏi câu lệnh switch.
  5. default: Đây giống như "else" trong câu lệnh if-else. Nó sẽ được thực thi nếu không có case nào khác khớp.

Sơ đồ lưu lượng: Bản đồ của các câu lệnh Switch

Để trực quan hóa cách một câu lệnh switch hoạt động, hãy cùng nhìn vào một sơ đồ lưu lượng:

+-------------+
|   Bắt đầu   |
+-------------+
|
v
+-------------------+
| Đánh giá biểu thức|
+-------------------+
|
v
+---------------------+
| Case 1 có khớp không?|
+---------------------+
|       |
Có|     Không|
|       |
v       v
+------------+  +---------------------+
|Thực thi case| |Case 2 có khớp không? |
|1 mã block|  +---------------------+
+------------+    |       |
|         Có|     Không|
|           |       |
|           v       v
|    +------------+  +-----------+
|    |Thực thi case|  |  ... các case khác |
|    |2 mã block|  +-----------+
|    +------------+           |
|           |              |
|           |              |
|           |              v
|           |        +-----------+
|           |        | Thực thi mã |
|           |        | default   |
|           |        | block|
|           |        +-----------+
|           |              |
v           v              v
+-------------+
|   Kết thúc  |
+-------------+

Sơ đồ này cho thấy cách TypeScript đánh giá từng case và thực thi mã block tương ứng khi tìm thấy khớp.

Ví dụ: Một ngày trong cuộc sống của một lập trình viên

Hãy cùng đi vào một ví dụ thực tế. Giả sử chúng ta đang tạo một chương trình đưa ra lời khuyên dựa trên ngày trong tuần. Dưới đây là cách chúng ta có thể sử dụng câu lệnh switch cho điều này:

let day: string = "Monday";
let advice: string;

switch (day) {
case "Monday":
advice = "Bắt đầu tuần của bạn một cách mạnh mẽ!";
break;
case "Tuesday":
advice = "Giữ vững momentum của bạn!";
break;
case "Wednesday":
advice = "Bạn đã đi được nửa đường rồi!";
break;
case "Thursday":
advice = "Chỉ cần một bước nữa trước khi đến thứ Sáu!";
break;
case "Friday":
advice = "TGIF! Kết thúc mạnh mẽ!";
break;
case "Saturday":
case "Sunday":
advice = "Thưởng thức cuối tuần của bạn!";
break;
default:
advice = "Đó không phải là một ngày hợp lệ!";
}

console.log(advice);

Trong ví dụ này:

  1. Chúng ta khai báo một biến day và đặt nó là "Monday".
  2. Chúng ta tạo một câu lệnh switch để kiểm tra giá trị của day.
  3. Cho mỗi ngày, chúng ta đặt một lời khuyên khác nhau.
  4. Lưu ý rằng thứ Bảy và Chủ nhật chia sẻ cùng một lời khuyên - chúng ta có thể chồng các case như vậy!
  5. Nếu ai đó nhập một ngày không hợp lệ, case mặc định sẽ bắt lấy.

Khi chúng ta chạy đoạn mã này, nó sẽ ra: "Bắt đầu tuần của bạn một cách mạnh mẽ!"

Tầm quan trọng của câu lệnh Break

Bây giờ, bạn có thể đang tự hỏi, "Vậy chuyện gì sẽ xảy ra nếu chúng ta quên bao gồm các câu lệnh break?" Well, người bạn tò mò của tôi, hãy để tôi chỉ cho bạn điều gì sẽ xảy ra khi chúng ta quên bao gồm chúng:

let fruit: string = "apple";
let response: string;

switch (fruit) {
case "apple":
response = "Một quả táo mỗi ngày giúp bạn tránh xa bác sĩ!";
case "banana":
response = "Chuối giàu kali!";
case "orange":
response = "Cam đầy vitamin C!";
default:
response = "Tôi không biết nhiều về loại quả đó.";
}

console.log(response);

Bạn có thể đoán mã này sẽ ra gì không? Nếu bạn đoán "Tôi không biết nhiều về loại quả đó.", bạn đã đúng! Nhưng tại sao?

Without break statements, TypeScript sẽ tiếp tục thực thi mã cho tất cả các case sau khi tìm thấy một khớp. Đây được gọi là hành vi "fall-through". Trong ví dụ của chúng ta, nó khớp với "apple", nhưng sau đó tiếp tục qua tất cả các case khác, cuối cùng đạt đến case mặc định.

Hành vi này có thể hữu ích trong một số tình huống, nhưng thường không phải là điều chúng ta muốn. Đó là lý do tại sao việc nhớ các câu lệnh break là rất quan trọng!

Kết luận: Thay đổi mã của bạn

Và thế là bạn đã có nó, những người yêu TypeScript non trẻ! Chúng ta đã cùng nhau đi qua thế giới của các câu lệnh switch, từ cú pháp cơ bản đến cách hoạt động bên trong và thậm chí là một số pitfall tiềm ẩn. Nhớ rằng, các câu lệnh switch là như những người điều khiển lưu lượng cho mã của bạn, hướng dẫn luồng dựa trên các giá trị khác nhau.

Khi bạn tiếp tục hành trình lập trình của mình, bạn sẽ thấy các câu lệnh switch là công cụ vô giá trong bộ công cụ mã của bạn. Chúng có thể làm cho mã của bạn sạch sẽ và hiệu quả hơn, đặc biệt khi bạn đối mặt với nhiều điều kiện.

Hãy tiếp tục thực hành, giữ vững sự tò mò, và trước khi bạn biết điều đó, bạn sẽ thành thạo việc sử dụng các câu lệnh switch! Chúc bạn vui vẻ khi lập trình, và hãy nhớ - trong thế giới lập trình, mỗi ngày đều là cơ hội để thay đổi và học hỏi điều mới!

Credits: Image by storyset