hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
      • NodeJS
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
      • MongoDB
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Machine Learning
    • Git và Github
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Typescript cơ bản
TypeScript cơ bản – Hàm, kiểu tham số, giá trị trả về và callback

TypeScript cơ bản – Hàm, kiểu tham số, giá trị trả về và callback

  • 17-10-2026
  • Toanngo92
  • 0 Comments

Khi chuyển từ JavaScript sang TypeScript, hàm là nơi khai báo kiểu đem lại lợi ích rõ nhất. Bạn mô tả hàm nhận gì và trả về gì; trình soạn thảo có thể phát hiện lời gọi sai trước khi chương trình chạy. Bài này dùng cấu hình strict của bài chạy chương trình đầu tiên và không yêu cầu React hay framework.

Mục lục

  • 1. Kiểu tham số và kiểu trả về
  • 2. Tham số tùy chọn
  • 3. Tham số có giá trị mặc định
  • 4. Rest parameter cho nhiều đối số
  • 5. Kiểu của callback và arrow function
  • 6. Chạy và tránh những lỗi thường gặp
  • Đọc tiếp trong loạt bài

1. Kiểu tham số và kiểu trả về

function add(a: number, b: number): number {
  return a + b;
}
console.log(add(2, 3)); // 5
// add("2", 3); // Bỏ chú thích sẽ báo lỗi kiểu tham số

Phần : number sau dấu ngoặc tròn là kiểu trả về. TypeScript thường suy luận được kiểu đó từ return; viết rõ ở những hàm dùng chung giúp thể hiện hợp đồng và phát hiện thay đổi ngoài ý muốn. Với strict, tham số không có kiểu và không có ngữ cảnh suy luận sẽ bị báo lỗi implicit any.

2. Tham số tùy chọn

function greet(name: string, title?: string): string {
  const prefix = title ? title + " " : "";
  return "Chào " + prefix + name;
}
console.log(greet("An")); // Chào An
console.log(greet("An", "bạn")); // Chào bạn An

Dấu ? cho phép bỏ qua title khi gọi hàm. Trong thân hàm, title có thể là string hoặc undefined, vì vậy phải xử lý trước khi dùng như một chuỗi chắc chắn có giá trị. Với chữ ký thông thường, tham số bắt buộc không được đặt sau tham số đánh dấu tùy chọn.

3. Tham số có giá trị mặc định

function applyDiscount(price: number, percent = 0): number {
  return price * (1 - percent / 100);
}
console.log(applyDiscount(100)); // 100
console.log(applyDiscount(100, 10)); // 90

TypeScript suy luận percent là number từ giá trị mặc định. Giá trị mặc định được dùng khi đối số bị bỏ qua hoặc là undefined; nó không thay thế null. Optional cho phép thiếu giá trị, còn default cung cấp cách xử lý khi thiếu. Hãy chọn theo ý nghĩa nghiệp vụ, thay vì thêm dấu ? cho mọi tham số.

4. Rest parameter cho nhiều đối số

function total(...prices: number[]): number {
  return prices.reduce((sum, price) => sum + price, 0);
}
console.log(total(10, 20, 30)); // 60
console.log(total()); // 0

Rest parameter nhận phần đối số còn lại dưới dạng mảng và phải đứng cuối danh sách tham số. Kiểu number[] giới hạn từng phần tử. Giá trị khởi tạo 0 trong reduce giúp hàm xử lý cả trường hợp không có phần tử.

5. Kiểu của callback và arrow function

type PriceFormatter = (price: number) => string;

function printPrice(price: number, format: PriceFormatter): void {
  console.log(format(price));
}

const formatVnd: PriceFormatter = price =>
  price.toLocaleString("vi-VN") + " đ";

printPrice(150000, formatVnd); // 150.000 đ

PriceFormatter là tên của một kiểu hàm. Callback nhận number và phải tạo ra string; tên tham số vẫn cần được viết trong chữ ký kiểu. Tham số price của arrow function được suy luận từ PriceFormatter nên không phải chú thích lại.

void ở printPrice cho biết người gọi không nhận một kết quả hữu ích từ hàm này. Có một điểm cần phân biệt: kiểu callback () => void cho phép bỏ qua kết quả của callback, nên đôi khi có thể truyền một hàm thực tế trả về giá trị. Điều đó không có nghĩa mọi hàm khai báo trực tiếp : void được tùy ý return một giá trị.

6. Chạy và tránh những lỗi thường gặp

Đặt từng ví dụ vào src/main.ts, thêm export {}; ở cuối nếu file chưa có import/export, rồi chạy npx tsc -p . và node dist/main.js. Không dán những khai báo trùng tên nhiều lần trong cùng file. Nếu hàm tạo ra dữ liệu, trả về giá trị thay vì chỉ console.log; nếu tham số có thể thiếu, hãy xử lý undefined trước khi truy cập.

Đọc thêm: TypeScript: More on Functions.

Đọc tiếp trong loạt bài

Bài trước: TypeScript cơ bản – Chạy chương trình đầu tiên và cấu hình tsconfig.json

Bài tiếp theo: TypeScript cơ bản – Type và interface: mô tả cấu trúc dữ liệu

Xem chuyên mục TypeScript cơ bản

Bài viết liên quan:

TypeScript với Kiểu Dữ Liệu Cơ Bản – 3
TypeScript với Kiểu Dữ Liệu Cơ Bản – 2
TypeScript với Kiểu Dữ Liệu Cơ Bản – 1
Typescript cơ bản và cách cài đặt cho người mới

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

TypeScript cơ bản – Class, constructor, phạm vi truy cập và implements

TypeScript cơ bản – Promise, async/await và kiểm tra dữ liệu API

TypeScript cơ bản – DOM, sự kiện và biểu mẫu trên trình duyệt

TypeScript cơ bản – Module, import, export và tổ chức nhiều file

TypeScript cơ bản – Generics và keyof: tái sử dụng mà vẫn giữ kiểu

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×