This course introduces JavaScript developers to TypeScript while emphasizing Test-Driven Development (TDD). It focuses on leveraging TypeScript's static typing and tooling to improve software reliability and maintainability.
- Familiarity with JavaScript (ES6+)
- Basic understanding of unit testing (Jest, Mocha, or similar)
- Understand the benefits of TypeScript over JavaScript
- Set up a TypeScript project with Jest for TDD
- Write basic TypeScript with type annotations
- What is TypeScript? Why use it?
- Setting up TypeScript (
tsc
,tsconfig.json
) - Installing and configuring Jest with TypeScript
- Writing and running a basic test in TypeScript
- Type annotations (
number
,string
,boolean
,any
,unknown
) - First TDD cycle: Write a test → Write minimal TypeScript → Refactor
- Initialize a TypeScript project with Jest.
- Write a function
add(a, b): number
following TDD principles.
- Understand TypeScript’s function signatures and parameter types
- Learn about interfaces and how they enforce contracts
- Explore testing strategies for functions and objects
- Function signatures (
optional
,default
,rest
parameters) - Defining and using interfaces
- Testing pure functions in TypeScript
- Using
tsc --noEmit
for type-checking without compilation - Error handling and testing edge cases
- Create an
interface
for aUser
object. - Write a function
getFullName(user: User): string
and test it using TDD.
- Learn how to use TypeScript classes
- Understand
enum
usage in TypeScript - Implement dependency injection for better testability
- TypeScript
class
and constructor parameters - Public, private, and readonly properties
- Using
enum
for managing constant values - Mocking dependencies in unit tests
- Testing class methods using Jest
- Create a
Logger
class with alogMessage(level: LogLevel, message: string)
method. - Use TDD to build and test the class.
- Explore generics and how they improve code reusability
- Understand TypeScript’s utility types
- Learn how to integrate TypeScript and TDD in a real-world project
- Generics (
T
,U
,K extends keyof T
) - TypeScript utility types (
Partial<T>
,Readonly<T>
,Pick<T>
) - Testing asynchronous code and promises in TypeScript
- Integrating TypeScript into an existing JavaScript project
- Using ESLint and Prettier for TypeScript projects
- Create a
fetchData<T>(url: string): Promise<T>
function. - Write tests to ensure proper error handling and response parsing.
Participants will apply their knowledge by developing a small, test-driven TypeScript application, such as:
- A simple to-do list with TypeScript classes and interfaces
- A REST API client with typed responses and unit tests
- A CLI tool using TypeScript and Node.js
- Review key takeaways from TypeScript and TDD
- Discuss real-world use cases and best practices
- Provide resources for further learning
- Official TypeScript Docs: https://www.typescriptlang.org/docs/
- Jest Docs: https://jestjs.io/docs/en/getting-started
- TypeScript Handbook: https://www.typescriptlang.org/docs/handbook/intro.html