Summary

Congratulations, in this chapter, you created your first Angular application with a flexible architecture while avoiding over-engineering. This was possible because we first built a road map and codified it in a Kanban board that is visible to your peers and colleagues. We stayed focused on implementing the first feature we put in progress and didn't deviate from the plan.

You can now use Angular CLI and an optimized VS Code development environment to help you reduce the amount of coding you need to do. You can leverage TypeScript anonymous types and observable streams to accurately reshape complicated API data into a simple format without having to create one-use interfaces.

You learned to avoid coding mistakes by proactively declaring input and return types of functions and working with generic functions. You used the date and decimal pipes to ensure that the data is formatted as desired, while keeping formatting-related concerns mostly in the template, where this kind of logic belongs.

Finally, you used interfaces to communicate between components and services without leaking the external data structure to internal components. By applying all these techniques in combination, which Angular, RxJS, and TypeScript have allowed us to do, you have ensured proper separation of concerns and encapsulation. As a result, the CurrentWeather component is now a truly reusable and composable component; this is not an easy feat to achieve.

If you don't ship it, it never happened. In the next chapter, we will prepare this Angular app for a production release by troubleshooting application errors, ensuring automated unit and e2e tests pass and containerizing the Angular app with Docker, so it can be published on the web.