# TypeScript - Các Lệnh If Nested: Hướng Dẫn Cho Người Mới Bắt Đầu

Xin chào các ngôi sao lập trình tương lai! Hôm nay, chúng ta sẽ cùng lặn sâu vào thế giới thú vị của các lệnh if nested trong TypeScript. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - tôi sẽ là người bạn đồng hành thân thiện của bạn trong chuyến phiêu lưu này, giống như tôi đã làm cho hàng trăm học sinh trong những năm dạy học của mình. Vậy, hãy lấy饮料 yêu thích của bạn, ngồi thoải mái, và cùng bắt đầu hành trình này nhé!

## Các Lệnh If Nested Là Gì?

Trước khi chúng ta nhảy vào phần sâu, hãy bắt đầu từ những điều cơ bản. Hãy tưởng tượng bạn đang chơi một trò chơi điện tử mà nhân vật của bạn cần phải đưa ra nhiều quyết định. Mỗi quyết định dẫn đến một bộ các lựa chọn khác. Đó chính là bản chất của các lệnh if nested trong lập trình - quyết định trong quyết định!

Trong TypeScript (và nhiều ngôn ngữ lập trình khác), chúng ta sử dụng các lệnh if để đưa ra quyết định trong mã của mình. Khi chúng ta đặt một lệnh if bên trong một lệnh if khác, đó là ما chúng ta gọi là "lenh if nested."

### Tại Sao Sử Dụng Các Lệnh If Nested?

Bạn có thể tự hỏi, "Tại sao chúng ta cần những quyết định nested này?" Hãy để tôi kể cho bạn một câu chuyện nhỏ.

Hãy tưởng tượng bạn đang tạo một chương trình cho một quán cà phê. Bạn muốn cung cấp giảm giá cho khách hàng, nhưng điều này phụ thuộc vào hai điều kiện: liệu họ có là khách hàng thường xuyên hay không và liệu họ có mua hơn 3 cốc cà phê hay không. Bạn có thể sử dụng các lệnh if nested để kiểm tra cả hai điều kiện này. Đó giống như hỏi, "Họ có phải là khách hàng thường xuyên không? Nếu có, họ có mua hơn 3 cốc cà phê không?"

Bây giờ, hãy xem cách chúng ta viết chúng trong TypeScript!

## Cú Pháp Các Lệnh If Nested

Dưới đây là cấu trúc cơ bản của các lệnh if nested:

```typescript
if (condition1) {
    // Mã để chạy nếu condition1 là true
    if (condition2) {
        // Mã để chạy nếu cả condition1 và condition2 đều là true
    }
}

Đừng để điều này làm bạn hoảng hốt! Nó đơn giản hơn bạn nghĩ. Hãy cùng phân tích:

TypeScript - Nested If Statements

  1. Chúng ta bắt đầu với một lệnh if ngoài kiểm tra condition1.
  2. Nếu condition1 là true, chúng ta vào khối mã đầu tiên.
  3. Bên trong khối mã này, chúng ta có một lệnh if khác kiểm tra condition2.
  4. Nếu condition2 cũng là true, chúng ta thực hiện khối mã trong cùng.

Ví Dụ: Giảm Giá Quán Cà Phê

Hãy biến câu chuyện của quán cà phê thành mã:

let isRegularCustomer: boolean = true;
let numberOfCoffees: number = 4;

if (isRegularCustomer) {
    console.log("Chào mừng quay lại! Hãy kiểm tra xem bạn có đủ điều kiện nhận giảm giá không.");
    if (numberOfCoffees > 3) {
        console.log("Tin vui! Bạn nhận được 20% giảm giá đơn hàng của mình.");
    } else {
        console.log("Mua thêm một cốc cà phê để nhận được 20% giảm giá!");
    }
} else {
    console.log("Chào mừng! Hãy xem xét tham gia chương trình khách hàng thân thiết để nhận nhiều ưu đãi.");
}

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

  1. Chúng ta宣布 hai biến: isRegularCustomernumberOfCoffees.
  2. Lệnh if ngoài kiểm tra xem khách hàng có phải là khách hàng thường xuyên hay không.
  3. Nếu họ là, chúng ta chào mừng họ và chuyển đến lệnh if trong cùng.
  4. Lệnh if trong cùng kiểm tra xem họ có mua hơn 3 cốc cà phê hay không.
  5. Nếu cả hai điều kiện đều là true, họ nhận được tin nhắn giảm giá.
  6. Nếu họ là khách hàng thường xuyên nhưng mua 3 hoặc ít hơn cốc cà phê, họ được khuyến khích mua thêm.
  7. Nếu họ không phải là khách hàng thường xuyên, họ nhận được tin nhắn chào mừng khác.

Chạy mã này, và bạn sẽ thấy tin nhắn giảm giá vì cả hai điều kiện đều là true!

Bậc Thang Else...If

Bây giờ, hãy nâng cấp trò chơi của chúng ta với bậc thang else...if. Điều này rất hữu ích khi bạn có nhiều điều kiện để kiểm tra.

Cú Pháp của Bậc Thang Else...If

Dưới đây là cách nó trông như thế nào:

if (condition1) {
    // Mã cho condition1
} else if (condition2) {
    // Mã cho condition2
} else if (condition3) {
    // Mã cho condition3
} else {
    // Mã nếu không có điều kiện nào là true
}

Ví Dụ: Ưu Thích Nhiệt Độ Cà Phê

Hãy sử dụng bậc thang else...if để xử lý các ưu thích nhiệt độ cà phê khác nhau:

let coffeeTemperature: number = 70; // Nhiệt độ theo Celsius

if (coffeeTemperature > 80) {
    console.log("Cẩn thận: Cà phê của bạn quá nóng!");
} else if (coffeeTemperature >= 70) {
    console.log("Cà phê của bạn nóng và sẵn sàng uống.");
} else if (coffeeTemperature >= 60) {
    console.log("Cà phê của bạn ở nhiệt độ ấm áp.");
} else if (coffeeTemperature >= 50) {
    console.log("Cà phê của bạn đang lạnh dần, hãy uống sớm đi.");
} else {
    console.log("Cà phê của bạn đã lạnh. Bạn có muốn chúng tôi hâm lại không?");
}

Trong ví dụ này:

  1. Chúng ta kiểm tra nhiệt độ cà phê theo các ngưỡng khác nhau.
  2. Tùy thuộc vào nhiệt độ, chúng ta cung cấp một tin nhắn khác nhau.
  3. Nếu không có điều kiện nào được满足, chúng ta giả định cà phê đã lạnh.

Cấu trúc này cho phép chúng ta xử lý nhiều kịch bản khác nhau một cách hiệu quả mà không cần nested quá sâu.

Các Quy Tắc Vàng Cho Các Lệnh If Nested

Trước khi chúng ta kết thúc, đây là một số quy tắc vàng tôi đã học được trong những năm qua:

  1. Giữ Đơn Giản: Cố gắng không nested quá sâu. Nếu bạn thấy mình có hơn 3 cấp độ, hãy xem xét refactor mã của bạn.

  2. Sử Dụng Các Điều Kiện Rõ Ràng: Làm cho các điều kiện của bạn dễ hiểu. if (isHungry && timeIsPastNoon) rõ ràng hơn if (a && b).

  3. Xem Xét Sử Dụng Các Lệnh Switch: Đối với nhiều điều kiện kiểm tra cùng một biến, một lệnh switch có thể rõ ràng hơn.

  4. Sử Dụng Early Returns: Đôi khi, bạn có thể đơn giản hóa mã của mình bằng cách return sớm thay vì nested.

Dưới đây là một ví dụ nhanh về early returns:

function checkAge(age: number): string {
    if (age < 0) {
        return "Tuổi không hợp lệ";
    }
    if (age < 18) {
        return "Bạn là một người vị thành niên";
    }
    if (age < 65) {
        return "Bạn là một người lớn";
    }
    return "Bạn là một người cao tuổi";
}

Điều này thường sạch sẽ hơn so với việc nested nhiều lệnh if-else.

Kết Luận

Chúc mừng! Bạn đã nâng cấp kỹ năng TypeScript của mình với các lệnh if nested và bậc thang else...if. Nhớ rằng, những công cụ này rất mạnh mẽ trong bộ công cụ lập trình của bạn, nhưng hãy sử dụng chúng một cách khôn ngoan.

Thực hành các khái niệm này, chơi với các điều kiện khác nhau, và sớm bạn sẽ có thể tạo ra các cây quyết định phức tạp một cách dễ dàng. Ai biết được? Có lẽ bạn sẽ sử dụng những kỹ năng này để tạo ra trò chơi video lớn tiếp theo hoặc ứng dụng cách mạng!

Tiếp tục lập trình, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ! Đến gặp lại các bạn, đây là người giáo viên lập trình hàng xóm thân thiện của bạn signing off. Chúc các bạn lập trình TypeScript vui vẻ!

Credits: Image by storyset