📄️ Function declaration
Function declaration là cú pháp để định nghĩa function trong JavaScript.
📄️ Function expression
Function expression là một trong những cách tạo function trong JavaScript, sử dụng function expression.
📄️ Arrow function
Arrow function là một trong những cách tạo function trong JavaScript.
📄️ Khai báo kiểu function
Trong TypeScript, bạn có thể khai báo kiểu của function. Khai báo kiểu function là việc định nghĩa interface của function mà không chỉ ra implementation.
📄️ Function declaration và hoisting
Một ví dụ về sự khác biệt giữa function declaration và function expression trong JavaScript là hoisting. Function declaration có hoisting, còn function expression thì không.
📄️ Sự khác biệt giữa traditional function và arrow function
Function trong JavaScript có thể được tạo bằng 3 cách: [function declaration], [function expression], và [arrow function].
📄️ Function là value
Trong các ngôn ngữ khác, function đôi khi có vị trí đặc biệt. Trong một số ngôn ngữ, khai báo biến cùng tên không gây lỗi, nhưng định nghĩa function cùng tên lại gây lỗi. Trong ngôn ngữ khác, không thể gán function vào biến.
📄️ Function là object
Function trong JavaScript là object. Do đó, bạn có thể gắn property cho function.
📄️ Hàm không có return value và kiểu void
Trong TypeScript, để type annotation cho return value của hàm không có return value, sử dụng kiểu void. Kiểu void là kiểu đặc biệt dùng để type annotation cho return value của hàm.
📄️ Tham số function
Số lượng tham số
📄️ Truyền theo giá trị và tham chiếu
Khi truyền biến làm actual argument cho function, có 2 cách truyền vào formal parameter: truyền theo giá trị (pass-by-value) và truyền theo tham chiếu (pass-by-reference) (truyền theo giá trị có thể chia nhỏ hơn nữa).
📄️ Optional parameter
Optional parameter là tính năng riêng của TypeScript cho phép bỏ qua argument khi truyền vào. Optional parameter được biểu diễn bằng cách viết dấu hỏi ? sau tên argument.
📄️ Default parameter
Default parameter cho phép chỉ định giá trị thay thế khi giá trị của tham số là undefined.
📄️ Rest parameter
Function thông thường có số lượng tham số cố định. Trong JavaScript, bạn cũng có thể tạo function không cố định số lượng tham số. Tham số không cố định số lượng được gọi là variadic arguments (tham số có độ dài thay đổi). Trong JavaScript, variadic arguments được gọi là rest parameter (tham số còn lại).
📄️ Tham số this
Tham số đầu tiên của function (ngoài arrow function) và method của class có thể nhận tham số đặc biệt là this. Vì ý nghĩa của this thay đổi tùy theo context sử dụng, nên điều này được dùng để cho TypeScript biết function này nên được sử dụng trong context nào. Khi gọi, caller không cần quan tâm đến this này. Chỉ cần chỉ định từ tham số thứ hai trở đi.
📄️ Destructuring assignment parameter
Trong JavaScript, cú pháp destructuring assignment cũng có thể được sử dụng cho tham số của function. Khi tham số là object hoặc array, destructuring assignment parameter rất tiện lợi nếu bạn chỉ muốn sử dụng một phần của object hoặc array đó trong function.
📄️ Keyword argument và Options Object pattern
JavaScript và TypeScript không có tính năng keyword argument như Python. Tuy nhiên, có thể ứng dụng destructuring assignment parameter để làm điều tương tự như keyword argument.
📄️ Type guard function
Compiler của TypeScript phân tích type của biến tại mỗi vị trí trong control flow như if hay switch, tính năng này được gọi là control flow analysis (phân tích luồng điều khiển).
📄️ Assertion function
Type predicate chủ yếu được sử dụng như user-defined type guard function, nhưng cũng có một phương pháp khác là assertion function.
📄️ IIFE
IIFE (Immediately Invoked Function Expression - Biểu thức hàm thực thi ngay lập tức) là function được thực thi ngay khi định nghĩa.
📄️ Callback function
Callback function là function được truyền làm tham số của một function khác. Bằng cách gọi (callback) function được chỉ định qua tham số bên trong function, bạn có thể kiểm soát hành vi của function hoặc nhận kết quả không đồng bộ.
📄️ Overload function
Overload function là tính năng của TypeScript cho phép một hàm có nhiều function signature khác nhau. Function signature là kiểu của hàm bao gồm các tham số và kiểu trả về. Nói cách khác, hàm có nhiều pattern khác nhau về tham số và giá trị trả về được gọi là overload function.