Main idea
A function is a contract. Type the inputs it accepts and the output it promises.
In a hackathon project, most bugs hide in small helper functions: price totals, filters, form validation, API formatting. Function types make those bugs visible early.
Where to type
Type parameters first. Then type the return value when the function is shared, exported, or important to your app flow.
TypeScript can infer many return types. But for functions used by UI, API calls, or payments, writing the return type makes your intent clear to teammates and recruiters reading your repo.