This repository records the Week 1 learning work for JavaScript and TypeScript backend development. It progresses from language revision, through TypeScript features and project configuration, to a small Express API and an asynchronous API client utility.
| Learning outcome | Evidence in this repository |
|---|---|
| Modern JavaScript and ES6+ | Destructuring, spread syntax, template literals, optional chaining, and nullish coalescing in revision/js. |
Promises, async/await, and errors |
Promise examples and try/catch exercises in revision; asynchronous user services and route error handling in the backend. |
| TypeScript fundamentals | Interfaces, typed values, enums, a class, and a generic fetch utility. |
| TypeScript backend setup | A strict TypeScript/NodeNext Express project with a separated route, service, data, interface, and utility structure. |
| Practical task | A generic fetch-and-transform program that calls the local /users API exposed by the backend. |
week1/
├── practical/ # Generic asynchronous API utility
├── revision/ # JavaScript and TypeScript language exercises
│ ├── js/ # Plain JavaScript ES6+ revision
│ └── ts/ # Configured TypeScript revision project
└── tsbackend/ # Express API used by the practical exercise
The folders reflect the learning flow: revise JavaScript, apply the same concepts with TypeScript, build a small backend, and then consume that backend asynchronously.
- Run the backend first, following
tsbackend/README.md. - Build and inspect the TypeScript revision exercises with
revision/ts/README.md. - Review the API utility in
practical/README.md.
revision/README.md— language-revision exercises.revision/ts/README.md— the TypeScript revision project.tsbackend/README.md— setup, API routes, and backend design.practical/README.md— generic API utility and its current limitations.
The practical utility demonstrates API consumption by calling this repository's local Express API. A public third-party API has not yet been added. The practical also currently imports an interface with a .ts extension, which standard NodeNext TypeScript compilation rejects; see its README for the exact limitation and resolution.