
Master TypeScript from scratch to advanced concepts, solving JavaScript issues with precise TypeScript solutions across Angular, React, and Express, reinforced by real-time examples, quizzes, assignments, and downloadable source code.
TypeScript extends JavaScript with strictly type checking and object-oriented features for modular, scalable code. It compiles to JavaScript, so users keep using their devices while developers gain fewer errors.
Explore how JavaScript handles variables, HTML integration, and runtime execution while highlighting type safety issues, missing syntax checks, and readability challenges in large codebases.
Explore the evolution of javascript versions from es1 to es6, including features like try-catch, json support, and let keyword, and how version mismatches affect debugging.
TypeScript is a superset of JavaScript that adds type safety and object-oriented features, with compilation that reveals errors before execution and improves readability, aided by tsconfig.json.
Explore how TypeScript versions add small updates while preserving core functionality, with 5.1 as the latest stable release and 4.0 among earlier versions, as TypeScript remains a JavaScript superset.
Install Visual Studio Code and Node.js, then verify npm and Node.js versions in the terminal. Restart VS Code if needed and prepare to install TypeScript via npm.
Install TypeScript locally via npm as a development dependency, create your first TypeScript file, and compile it with tsc to JavaScript for use in an HTML page.
download the zip from the resources, unzip it, and open the project folder in vscode; run npm install to restore dependencies (node_modules is omitted) for the typescript project.
Install the prettier code formatter extension and set it as default to ensure consistent formatting. Right-click format document or use the shortcut to fix indentation and remove extra spaces.
Explore how TypeScript compiles code by configuring tsconfig.json, initializing it, and enabling watch mode, while learning basic compilation behaviors and upcoming advanced type-based refinements.
Discover how watch mode (W) automates TypeScript to JavaScript compilation, updating HTML output on save, and how to manage multiple files like validations.ts.
Initialize a TypeScript project with tsc --init and generate a tsconfig.json, then configure target, module, strict options (including null types) and use watch mode to compile all TypeScript files.
Explore the noUnusedLocals option in tsconfig.json, which reports unused local variables inside functions as compile-time errors, and learn how to enable or disable this behavior for clearer code.
Enforce no unused parameters in TypeScript by flagging unused parameters like N1 and N2. Revert the configuration to default after trial and error to avoid unexpected compilation behavior.
Discover how the noImplicitReturns configuration enforces that every code path returns a value in TypeScript, preventing function misbehavior when a path may not return.
Learn to set up a debugger for TypeScript in VS Code and Chrome, enable source maps, and use breakpoints to inspect variables and step through code.
Explore the basic data types in TypeScript, including string, boolean, and number, plus the recently added bigint and symbol, and learn how implicit and explicit type assignments work through examples.
Learn how JavaScript's dynamic typing leads to invalid comparisons and how manual typeof checks enforce numeric inputs, underscoring the value of TypeScript's primitive data types.
Discover how TypeScript enforces primitive types, including numbers, strings, and booleans, through explicit annotations, type checking, and compilation, with examples like comparing numbers and concatenating strings.
Discover when to use bigint in TypeScript by comparing the number type's 2^53-1 limit. See bigint syntax with the n suffix and adjust tsconfig to target ES2020+ for broad compatibility.
Create unique identifiers with the TypeScript symbol type using the symbol constructor and optional descriptions, and learn that two symbols are never equal even with the same description.
Explore implicit and explicit type assignment in TypeScript by comparing explicit number annotations with variables declared without initial values, which TypeScript may infer as any.
Explore TypeScript by building with objects, arrays, literals, tuples, enums, and unions to write powerful scripts for complex applications.
Explore the object type in TypeScript by building an employee object with name, company, and salary. Learn implicit versus explicit typing, initialization, access, and common errors.
Explore read only and optional properties in a TypeScript object by modifying a sample employee, including a nested address with city and country, and see how salary can be optional.
Explore creating a function inside an object as a method to elaborate an employee’s details—name, company, and country—using this to access data and display a message.
Learn to use readonly arrays in TypeScript and work with arrays of objects by mapping names and filtering by salary, then preview destructuring in the next lecture.
Discover array destructuring to pull values into variables like n1 and n2, and compare shorthand array definitions with the new Array constructor in TypeScript.
Learn how TypeScript union types enable a value to be a number or string, see a display function that accepts multiple types, and explore type restrictions and manual validation.
Explore TypeScript enums by building a log level system with error, info, and warning, a display log function, and prefixes that reflect each log type.
Explore TypeScript enums in detail, including integer and string values, and apply practical usage with log levels and http status codes like 400 and 500.
Explore how the let keyword creates a new local scope, keeping global variables intact, as shown with a function and for loops that prevent unintended global changes.
Explore tuples in TypeScript as an array with mixed data types and restricted length, showing a string–number pair passed to a function and how pushing extra values affects tuple behavior.
Learn tuple destructuring in TypeScript to simplify function parameters by extracting employee name and id, improving readability and usage as local variables.
Understand literals in TypeScript by using union types to constrain http methods. See how literals prevent spelling mistakes and define return values like -1, 0, or 1.
Explore types of functions in TypeScript, inputs and outputs, and how default, optional, and rest parameters work, with arrow and anonymous functions and a simple add example.
Explore how arrow functions work in TypeScript, including syntax, parameters, return types, and assigning to variables; learn to pass functions as parameters to enable flexible production scenarios.
Explore anonymous functions and arrow functions, learn when to use each in TypeScript and JavaScript libraries, and inspect the function constructor, parameters, and optional parameters with rest parameters.
Explore typecasting in TypeScript, when to cast to string to compute length, and the risks of data loss when converting between string and number from user input or API data.
Understand typecasting to HTMLInputElement in TypeScript by accessing an input's value, diagnosing null element errors, and ensuring the DOM loads before code runs.
Learn object oriented principles in TypeScript by understanding classes, creating objects, and exploring constructors, parameters, access modifiers, overriding, overloading, abstract classes, getters, setters, and static properties and methods.
Learn what a class is as a skeleton of properties and methods. Explore a bank account example with number, name, balance, debit and credit to illustrate objects and class concepts.
Create a bank account class in TypeScript with account number, account name, and balance, initialized via a constructor, then instantiate accounts and use debit and credit methods.
Examine how a TypeScript class compiles into JavaScript, illustrating es5 versus es6 output, prototype usage, and how the compiler handles let and class keywords.
Make the bank account constructor accept two or three parameters by making the third optional or default to zero, and assign the balance accordingly.
Explore how the this keyword represents the object inside TypeScript constructors and methods, using account objects to show this dot account number and this dot account name in action.
Explore how access modifiers govern visibility in TypeScript by defaulting to public, using private to protect properties such as account balance, and exposing data through public methods like show balance.
Define a read-only account number in a bank account class, initialize it in the constructor, and prevent subsequent changes to satisfy new regulations.
Implement a credit method with validation for positive amounts and a minimum ₹10, update the balance, and track debits to apply ₹5 charges after three free debits.
Use a static property to count bank accounts across all BankAccount instances. Increment this count in the constructor so BankAccount.count tracks the total.
Explore how static properties and methods work in a bank account class, using a private count and a public static getCount to track how many accounts were created.
Learn inheritance by modeling a bank account with child classes: student bank account and business bank account, sharing properties and debit and credit while adding college or business name and loans.
Create and instantiate student and business bank account objects with four parameters—account number, account name, balance, and college or business name—and utilize debit, credit, and student loan facilities.
Learn how method overriding lets a child class customize an inherited debit operation from a bank account, introducing a specialized debit behavior for business accounts and using super when needed.
Demonstrates method overriding by extending a debit operation from a parent class to a business account, allowing balance to go to -1000 while enforcing checks.
Learn how the protected access modifier lets a derived class access an account balance while preventing external modification, solving privacy issues shown by overriding debit in a business bank account.
Explore abstract classes in TypeScript, using a bank account example to show how the abstract keyword prevents instantiation and guides inheritance, with focus on abstract methods and properties to come.
Explore abstract properties in TypeScript by declaring a required branch property in an abstract bank account and implementing and initializing it in business and student bank accounts.
Explore how getters and setters in TypeScript manage private properties, using public accessors to read and assign values, with underscore prefixes illustrating the convention.
TypeScript automatically inserts an invisible, parameterless constructor when you omit a constructor, letting object creation proceed. Adding parameters requires you to define the constructor accordingly.
Explore abstract methods in a TypeScript bank account hierarchy, declaring net banking in the abstract parent and requiring concrete implementations in student and business accounts, with example outputs.
Explore interfaces as a syntactical contract between classes and objects, and learn to declare and implement fields, extend interfaces, and apply union types and read-only properties.
Learn how a bank account interface defines compulsory fields and debit and credit methods, and how classes like student bank account implement and extend it to enforce consistent rules.
Create a bank account interface with account number, name, and balance, implement it in a student bank account class, and add a business bank account.
Learn to declare and implement interface functions in TypeScript by defining debit and credit methods for a bank account interface and implementing them in student and business account classes.
Explore how TypeScript interfaces translate into JavaScript, why interfaces disappear in the output, and how the compiler settings (ES5 vs ES6) affect the generated code.
Learn how to use union types in interface properties to support numbers and strings for bank account numbers, enabling flexible, type-safe designs for student and business accounts.
Learn the difference between interface and class in TypeScript, and when to use each. An interface is a declaration with no implementation, while a class combines declarations with concrete behavior.
Explore extending interfaces in TypeScript through a bank account scenario, where a V2 rule book adds net banking and other requirements that student and business accounts must implement.
Learn how to implement multiple interfaces in TypeScript by extending a bank account with bank standards, adding id proof and helpline, and understanding compiler behavior.
Illustrates using interfaces as types to define an employee with name, city, and skills, creating objects directly without classes, while noting TypeScript compiles to JavaScript and OOP is optional.
Explore how utility types enable common type manipulation using partial to make properties optional. See how require enforces all employee interface properties.
Explore more TypeScript utility types, including Omit and Pick, to shape employee data by omitting skills and selecting name and city for object creation.
Explore the differences between interfaces and type aliases in TypeScript, their roles in object oriented programming, when to use each, and how they extend or implement in classes.
Observe how interfaces with the same name merge in TypeScript, and compare with type aliases, while following examples with name and city properties and duplicate identifiers.
Explore generics in TypeScript by building generic functions, classes, and interfaces, and compare any versus generics and default values.
Explore generics by building a generic function display with type parameter T that logs a value and shows how the compiler enforces the same type across strings and numbers.
Explore naming conventions for generic data types in TypeScript, focusing on single-letter generics like T and variations, and align usage with community guidelines and library practices.
Explore how to declare and use two generic types in a display function, using strings and numbers to illustrate type inference, parameter roles, and compiler behavior.
Explore how to design dynamic generic return types in TypeScript using a function that preserves input type across numbers, strings, booleans, and objects, including third-party rest API payloads.
Explore the limitations of generics in a TypeScript concat function, illustrating how plus operations fail for non-string types and why a single return type may not satisfy all scenarios.
Learn to use arrays and generics in TypeScript by building a display logs function that iterates over an array with for each and adapts to a generic type.
Explain generics in classes by building a generic Pair class to store a key and a value, using type parameter T for string, number, or boolean types and safe getters.
Explore how generics with interfaces in TypeScript create a pair with string keys and values, using a generic type T, surfacing errors when type arguments are missing.
Compare generics and the any keyword in TypeScript using a generic assign function, demonstrating compile-time type safety and potential runtime issues when using any.
Explore advanced TypeScript compilation options, flags, and configurations to control behaviour and target JavaScript versions. Build confidence in TypeScript concepts like object oriented programming, data types, classes, and union types.
Explore the tsconfig.json as the TypeScript project root that defines compiler options, language targets, libraries, modules, and include/exclude rules, with emphasis on strict type checking and incremental builds.
Discover how the TypeScript target setting decides the emitted JavaScript version, from es5 to es6, with tsconfig.json examples and code using class, let, const, and var.
Learn to structure a TypeScript project by using rootDir to keep sources in src and outDir to emit JavaScript into dist, enabling watch mode for automatic compilation.
Explains how declaration files and declaration maps preserve type information from TypeScript to JavaScript, and shows how to navigate to the original TS file definitions using tsconfig.json.
Turn on the remove comments configuration to strip single-line and multi-line comments from TypeScript files before production, producing compact JavaScript without development commentary.
Turn on noEmit to compile TypeScript without generating JavaScript or a distribution folder during development. Switch it off for deployment to see the emitted JavaScript output.
Explore how TypeScript's noEmitOnError prevents JavaScript emission when any error exists, and ensures emission only after the project has zero errors.
Discover how noImplicitAny and strict mode enforce type safety in TypeScript, showing how implicit types arise and how strict true enables strict property checks.
Enable strictNullChecks to prevent null dereference when a string might be null. Show union types, optional checks, and debugging script path issues from source to distribution.
Learn how strict function types in TypeScript enforce input and output contracts when passing functions as parameters, using unions and void returns, with default strict mode and toggle options.
Explore how strict bind, call, and apply control binding the current this object and enforce type-safe string and number parameters in TypeScript.
learn how strict property initialization in TypeScript enforces initializing class properties, with examples of employee and bank account classes, and how the strictPropertyInitialization flag affects defaults and undefined outputs.
Understand noImplicitThis in TypeScript by examining a Rectangle class, showing how this refers to the current object in methods, and why enabling noImplicitThis prevents unsafe this usage.
Enable the noUnusedLocals configuration to catch unused local variables in TypeScript files, causing errors for declared but unreferenced locals and reducing code complexity.
Learn how to prevent switch statement fall-through in TypeScript by using break statements and enabling the noFallthroughCasesInSwitch compiler option to catch errors early.
Explore how TypeScript detects unreachable code in if and switch paths and how a stray return can trigger a VS Code warning, with compiler options to fail on it.
Explore how decorators add behavior to classes, methods, and parameters, enabling metaprogramming in TypeScript for advanced frameworks like Angular, from a compiler-driven integration perspective.
Explore how a class decorator enforces immutability by locking a bank account class, using Object.freeze on the constructor and prototype to prevent extends, showcasing metaprogramming.
Enable the experimental decorators flag in tsconfig.json to use decorators, as default support is absent; set to true to avoid errors like decorators are not allowed.
Understand decorator factories in TypeScript, where a function returns decorator for a class. Discover how to pass parameters and distinguish between calling a function and applying a decorator in metaprogramming.
Learners explore a change in the naming convention for decorators, noting that decorators are functions with annotation roles and why capitalizing them is recommended, even if not compulsory.
Explore a class decorator for a bank account that adds created date time and other properties via a decorator factory, with the decorator executing at class initialization using prototype.
Learn how multiple decorators on a class execute in a specific order, distinguishing decorator factories from decorators, and observe that the last decorator is called first.
Explore how Angular uses a class decorator to fuse HTML and TypeScript in reusable components. See how selectors and component metadata enable dynamic user interface for orders and dashboards.
Understand how a TypeScript property decorator trims string values by applying a setter and getter, using a decorator factory to enforce validation on account name properties.
Explore how method decorators use a decorator factory and descriptor to add user confirmation, gating function execution for debit and credit operations in TypeScript.
Learn how to pass parameters to method decorators using decorator factories to customize confirmation messages for debit and credit operations.
#1: Best Indian corporate instructor with TypeScript
"I attended Navin's offline training in Deloitte, India, for JavaScript; it was a great experience, which also helped me become a senior developer at my current company. Then I also learned about other technologies from him on Udemy. I loved the ways he explained concepts and also understood in advance the doubts that could arise for a learner; that's great art that comes with experience for any instructor." -- Govind Satpute
Why choose this course?
Everything is covered right from scratch.
Practical scenarios added from my product-building experience.
Unique ways to explain concepts with different real-time examples.
Deep dive into advanced topics.
Make yourself ready to learn advanced frameworks like React, Angular, Vue, Express, and many more.
Designing solutions for given problems.
Have you seen how few developers debug any code in minutes? Debugging is an art, which saves hours of your precious time.
Suitable for beginners, intermediates, and advanced learners (specific modules for mastering an area of JavaScript).
Why me as the instructor for this course?
My name is Navin Rajesham, and I am a certified corporate trainer from India. I trained Deloitte, CitiusTech, Infosys, TCS, and many more MNCs on JavaScript. With my 10+ years of experience, I learned how to keep a path in a course, elaborate the things, put great examples to understand concepts, and make sure all the learners get the best out of it. Creating an online course is not just a simple task; it's an art that comes with experience. I feel great when I read reviews of how my courses have helped learners. I would like to thank my 70k+ learners on Udemy.
What does the course cover?
Why TypeScript?
Issues in JavaScript
TypeScript versions
Setting watch mode
tsconfig.json in details
Setting up debugger
Data Types
Objects
Traditional Functions
Arrow Functions
Anonymous Functions
Array
Tuples
Union
Enums
Casting
Classes, Access Modifers
Getter & Setter
Static Property & Method
Inheritance
Abstract Classes, Properties & Methods
Interface
Utility Types
Generics
Advance Compiler Configurations
Decorators
TypeScript with Angular
TypeScript with Express
and many more
Additionally
The quizzes will help you test your understanding quickly.
The coding exercises will make you more confident in writing examples with the real-time concepts you learned.
In the active Q&A section, where students answer each other personally, I will be available to answer your queries.
Source code (in ZIP Format) is attached in almost every lecture, so if you are stuck somewhere & not able to get the desired output, you can quickly download and use it [but I recommend you to give it a try rather than downloading].
And finally, it’s Udemy, where you have a 30-Day Money-Back Guarantee for your satisfaction. So your investment is completely safe.
Let’s begin your typescript journey. See you inside the course.