Learning TypeScript from Scratch! This repository is a dedicated space for exploring the fundamentals of the language, building a playground for experimentation, and documenting professional course exercises.
This project is a progressive path that consolidates TypeScript essentials like syntax, typing rules, and type inference; applies advanced constructs such as interfaces, generics, and modular design; and extends into growth areas with utility types, type narrowing, and cross‑platform development.
TypeScript is an open-source programming language developed and maintained by Microsoft. It builds on JavaScript by adding optional static typing, interfaces, and advanced tooling that help developers catch errors early and write more maintainable code.
TypeScript compiles down to plain JavaScript, meaning it can run anywhere JavaScript runs, while providing a richer developer experience with features like type inference, autocompletion, and strong IDE support. It has become a popular choice for building scalable web applications and large codebases where clarity and reliability are essential.
TypeScript Technical Vocabulary
| Concept | Definition | Example |
|---|---|---|
| Type Annotations | Explicitly specify the type of a variable or parameter. | 📘 |
| Type Inference | Compiler’s ability to automatically deduce types. | 📘 |
| Interfaces | Contracts that define the shape of objects and classes. | 📘 |
| Type Aliases | Custom names for complex or repetitive types. | 📘 |
| Union Types | Combine multiple possible types for a single variable. | 📘 |
| Intersection Types | Merge several types into one. | 📘 |
| Literal Types | Specific values used as types (e.g., "success" or "error"). |
📘 |
| Tuples | Arrays with fixed length and defined types at each position. | 📘 |
| Enums | Collections of named constant values. | 📘 |
| Generics | Parameterized types that enable flexible and reusable code. | 📘 |
| Optional Properties | Properties that may or may not exist in an object. | 📘 |
| Readonly Properties | Properties that cannot be modified after initialization. | 📘 |
| Type Narrowing | Refine types at runtime through conditional checks. | 📘 |
| Type Assertions | Force the compiler to treat a value as a specific type. | 📘 |
| Modules & Imports | Organize code into files and dependencies. | 📘 |
| Decorators | Experimental annotations for classes and methods. | 📘 |
| Ambient Declarations | Files (.d.ts) that describe types of external libraries. |
📘 |
| Strict Mode | Rules that enforce stronger safety and consistency in code. | 📘 |
→ klerith/
Custom TypeScript Scripts: a curated collection of personalized examples created while studying, each one designed to reinforce concepts through practical experimentation and clear documentation.
Course Notes and Summaries: structured notes that capture the main lessons, explanations, and insights from the Udemy TypeScript course (2023), organized for quick reference and future review.
Learning Resources and Utilities: additional snippets, helper functions, and annotated exercises that extend the course material, serving as a personal toolkit for mastering TypeScript fundamentals and advanced features.
Klerith is a software engineer and educator who publishes programming courses and tutorials focused on modern web development.
He is recognized for his clear teaching style and practical examples, helping thousands of developers learn technologies such as JavaScript, TypeScript, Node.js, and React.
His courses emphasize hands-on practice, guiding learners step by step to build confidence and apply modern programming techniques effectively in real-world projects.
→ midudev/
Core TypeScript Fundamentals: introductory examples covering editor errors, typed functions, type inference, object and array typing, tuples, type aliases, optional and readonly properties, template literal types, union and intersection types, and type narrowing/assertion techniques.
API Integration and Advanced Typing: practical examples using fetch with top-level await, error handling in API calls, explicit parameter typing, and strong typing of external responses with generated types from tools like quicktype.io.
Interfaces and Data Structures: examples focused on defining and extending interfaces, implementing object methods, working with specialized and mixed shopping carts, applying union types, and building structured operations such as add, remove, and clear with different interface syntaxes and merging.
MiduDev is a Spanish software engineer, educator, and content creator who shares practical programming knowledge with a global developer community.
He is well known for his live coding sessions, tutorials, and intensive courses that focus on modern web technologies such as JavaScript, TypeScript, React, and Node.js.
Through his work, MiduDev has built a reputation for making complex concepts approachable, fostering open-source collaboration, and inspiring developers to grow their skills with hands-on examples and clear explanations.
Experimentation: scripts designed to test TypeScript features in isolation, allowing me to explore language behavior and edge cases with practical examples.
Exploration: exercises that extend beyond the course material, capturing curiosities, alternative approaches, and deeper insights discovered while studying.
Discovery: notes and implementations that transform questions into working code, building a catalog of scenarios that strengthen understanding and highlight real-world applications.
The Playground is a personal space for learning and growth, where each script reflects both technical practice and creative exploration.
It serves as a living record of my journey with TypeScript, documenting experiments, insights, and solutions in a structured and reproducible way.
Through this approach, I ensure that every exercise contributes positively to my mastery of the language and supports future reference and teaching.
Strengthen TypeScript Foundations: practice syntax, typing rules, and core concepts through structured examples, challenges, and course exercises. Each script highlights a specific feature of the language, making the learning process incremental and reproducible.
Bridge from JavaScript to TypeScript: consolidate knowledge in typing, interfaces, and modular design as preparation for deeper work with Node.js, React, React Native, and Expo. This progression ensures TypeScript can be applied effectively in both backend and frontend environments.
Long-Term Vision: use this repository as a stepping stone toward building cross‑platform applications, applying TypeScript with clarity and confidence in real-world projects, for iOS, Android, and the Web.
This repository is licensed under the terms of the Apache License 2.0. The license grants permission to use, modify, and distribute the code with proper attribution, while ensuring that improvements and extensions remain open and accessible to the community.
Built with '\u{2665}' (♥) by Jesús Domínguez @jdomingu19
