Functions (Hàm) trong TypeScript
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àmadd
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
-
MathOperation
là kiểu của hàm, định nghĩa hàm nhận hai số và trả về một số. - Hàm
multiply
vàdivide
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; |

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.
Xem thêm

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