Functions (Hàm) trong TypeScript

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 29 tháng 1, 2025

Hàm là một phần quan trọng trong lập trình TypeScript, giúp tổ chức mã nguồn thành các khối logic, dễ đọc, dễ bảo trì. TypeScript mở rộng JavaScript bằng cách thêm tính năng kiểu dữ liệu vào hàm, giúp kiểm tra lỗi và cải thiện hiệu suất lập trình.

Bài này sẽ hướng dẫn bạn cách định nghĩa hàm có kiểu dữ liệu, cách sử dụng tham số mặc định và tham số tùy chọn.

1. Định nghĩa hàm có kiểu trả về

Trong TypeScript, bạn có thể khai báo kiểu dữ liệu cho tham số và kiểu trả về của hàm.

1.1. Hàm có kiểu trả về cụ thể

function add(a: number, b: number): number {
  return a + b;
}

console.log(add(5, 10)); // Output: 15
  • a: number, b: number: Xác định kiểu dữ liệu của tham số.
  • : number: Xác định kiểu dữ liệu của giá trị trả về (hàm add trả về một số).

1.2. Hàm không có giá trị trả về (void)

Khi một hàm không trả về giá trị, ta dùng kiểu void:

function logMessage(message: string): void {
  console.log("Log:", message);
}

logMessage("Xin chào TypeScript!"); // Output: Log: Xin chào TypeScript!
  • void chỉ ra rằng hàm không có giá trị trả về, chỉ thực hiện hành động như console.log().

2. Tham số mặc định và tham số tùy chọn

2.1. Tham số mặc định

Bạn có thể gán giá trị mặc định cho tham số. Nếu không truyền giá trị, TypeScript sẽ sử dụng giá trị mặc định này.

function greet(name: string = "bạn"): string {
  return `Xin chào, ${name}!`;
}

console.log(greet()); // Output: Xin chào, bạn!
console.log(greet("Nam")); // Output: Xin chào, Nam!
  • Nếu không truyền tham số, name nhận giá trị mặc định là "bạn".
  • Nếu truyền giá trị, name sẽ nhận giá trị đó.

2.2. Tham số tùy chọn (?)

Tham số có thể có hoặc không, được khai báo bằng dấu ?.

function introduce(name: string, age?: number): string {
  if (age) {
    return `Tôi là ${name}, ${age} tuổi.`;
  } else {
    return `Tôi là ${name}.`;
  }
}

console.log(introduce("Linh")); // Output: Tôi là Linh.
console.log(introduce("An", 25)); // Output: Tôi là An, 25 tuổi.
  • age? nghĩa là có thể truyền hoặc không.
  • Nếu age không được truyền, hàm vẫn hoạt động bình thường.

3. Hàm có số lượng tham số không xác định (Rest Parameters)

Khi cần truyền một danh sách tham số có độ dài không xác định, dùng rest parameters (...args).

function sumAll(...numbers: number[]): number {
  return numbers.reduce((total, num) => total + num, 0);
}

console.log(sumAll(1, 2, 3)); // Output: 6
console.log(sumAll(10, 20, 30, 40)); // Output: 100
  • ...numbers: number[] thu thập tất cả tham số thành một mảng.
  • Hàm có thể nhận bất kỳ số lượng tham số nào.

4. Kiểu hàm trong TypeScript

TypeScript cho phép định nghĩa kiểu hàm giúp đảm bảo tính nhất quán trong chương trình.

type MathOperation = (a: number, b: number) => number;

const multiply: MathOperation = (x, y) => x * y;
const divide: MathOperation = (x, y) => x / y;

console.log(multiply(5, 2)); // Output: 10
console.log(divide(10, 2)); // Output: 5
  • MathOperationkiểu của hàm, định nghĩa hàm nhận hai số và trả về một số.
  • Hàm multiplydivide tuân theo kiểu này.

5. Tổng kết

Tính năng Cách sử dụng
Định nghĩa hàm có kiểu trả về function fn(a: number): number { return a; }
Hàm không có giá trị trả về function log(msg: string): void { console.log(msg); }
Tham số mặc định function greet(name: string = "bạn")
Tham số tùy chọn function introduce(name: string, age?: number)
Hàm có số lượng tham số không xác định function sumAll(...numbers: number[])
Kiểu hàm type MathOp = (a: number, b: number) => number;
Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ