</>
⌕
Mid #overload#functions#generics

Function overload trong TypeScript hoạt động thế nào? Khi nào nên dùng?

⚡ Trả lời nhanh

Overload khai báo nhiều signature cho một hàm; implementation signature đi sau cùng, phải tương thích với mọi overload và không hiển thị với bên ngoài. TS chọn overload đầu tiên khớp (từ trên xuống). Dùng khi kiểu trả về phụ thuộc kiểu đối số mà union/generic không biểu diễn được.

Ví dụ

main.ts · sửa được
  • Chỉ các overload signature là public API; implementation signature (string | number) không gọi trực tiếp được.
  • Thứ tự quan trọng: đặt signature cụ thể trước, tổng quát sau.
  • Cũng áp dụng cho method trong class và declare function trong file .d.ts.

Khi nào không nên

  • Nếu chỉ khác nhau về kiểu tham số mà trả về giống nhau, dùng union: (x: string | number): void.
  • Nếu trả về phụ thuộc kiểu tham số theo quy luật, dùng generic hoặc conditional type, tránh viết nhiều overload lặp lại.
  • Overload không kiểm tra thân hàm: implementation có thể trả sai kiểu mà vẫn compile nếu khớp signature rộng.
🃏 Ôn bằng flashcard