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.