Optional parameters trong TypeScript là một tính năng cho phép bạn định nghĩa các tham số trong hàm có thể không được cung cấp khi gọi hàm. Điều này giúp tăng tính linh hoạt trong việc sử dụng các hàm, cho phép người dùng bỏ qua một số tham số mà không làm hỏng chương trình. Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng optional parameters, cách thức hoạt động và các ví dụ minh họa.

Cách Định Nghĩa Optional Parameters

Để khai báo một tham số là optional trong TypeScript, bạn chỉ cần thêm dấu hỏi (?) sau tên tham số trong định nghĩa hàm. Điều này có nghĩa là tham số đó có thể không được truyền vào khi gọi hàm.

Ví dụ Cơ Bản

function greet(name: string, age?: number) {
    let message = `Hello, ${name}`;
    if (age !== undefined) {
        message += `, you are ${age} years old.`;
    }
    console.log(message);
}

greet("Alice"); // Kết quả: Hello, Alice
greet("Bob", 25); // Kết quả: Hello, Bob, you are 25 years old.

Trong ví dụ này, tham số age được định nghĩa là optional. Bạn có thể gọi hàm greet chỉ với tên, mà không cần cung cấp độ tuổi.

Hành Vi Khi Không Truyền Tham Số

Khi một tham số là optional, nếu bạn không truyền tham số đó khi gọi hàm, TypeScript sẽ gán giá trị undefined cho tham số đó. Bạn có thể kiểm tra giá trị của tham số trong thân hàm để xử lý các trường hợp khác nhau.

Ví dụ Kiểm Tra Tham Số Optional

function displayUserInfo(username: string, email?: string) {
    console.log(`Username: ${username}`);
    if (email) {
        console.log(`Email: ${email}`);
    } else {
        console.log("Email not provided.");
    }
}

displayUserInfo("johndoe"); // Kết quả: Username: johndoe, Email not provided.
displayUserInfo("janedoe", "[email protected]"); // Kết quả: Username: janedoe, Email: [email protected]

Trong ví dụ này, hàm displayUserInfo kiểm tra xem email có được cung cấp hay không trước khi in ra thông tin.

Kết Hợp Optional Parameters với Tham Số Bắt Buộc

Bạn có thể kết hợp các tham số optional với các tham số bắt buộc trong cùng một hàm. Tuy nhiên, tham số optional cần phải được đặt sau các tham số bắt buộc trong danh sách tham số.

Ví dụ Kết Hợp Tham Số

function createUser(username: string, password: string, email?: string) {
    console.log(`Username: ${username}`);
    console.log(`Password: ${password}`);
    if (email) {
        console.log(`Email: ${email}`);
    }
}

createUser("alice", "123456"); // Kết quả: Username: alice, Password: 123456
createUser("bob", "abcdef", "[email protected]"); // Kết quả: Username: bob, Password: abcdef, Email: [email protected]

Lưu Ý Khi Sử Dụng Optional Parameters

Kiểu Dữ Liệu: Khi một tham số là optional, kiểu dữ liệu của nó sẽ bao gồm undefined. Ví dụ, nếu bạn khai báo tham số là number?, thì kiểu của nó thực tế là number | undefined.

Gán Giá Trị Mặc Định: Nếu bạn muốn tham số optional có một giá trị mặc định nếu không được cung cấp, bạn có thể làm như sau:

function greet(name: string, greeting: string = "Hello") {    
   console.log(`${greeting}, ${name}!`);
}
greet("Alice"); 
// Kết quả: Hello, Alice!greet("Bob", "Hi"); 
// Kết quả: Hi, Bob!

Optional parameters trong TypeScript mang đến tính linh hoạt và tiện lợi khi định nghĩa các hàm. Chúng cho phép bạn dễ dàng quản lý các tham số mà không yêu cầu phải truyền vào tất cả các giá trị. Việc sử dụng optional parameters giúp mã nguồn trở nên rõ ràng hơn và giảm thiểu sự phức tạp trong việc gọi hàm.