{"id":2297,"date":"2025-04-30T10:43:25","date_gmt":"2025-04-30T17:43:25","guid":{"rendered":"https:\/\/www.angulartraining.com\/daily-newsletter\/?p=2297"},"modified":"2025-04-30T10:43:35","modified_gmt":"2025-04-30T17:43:35","slug":"tips-on-types-defer-and-more","status":"publish","type":"post","link":"https:\/\/www.angulartraining.com\/daily-newsletter\/tips-on-types-defer-and-more\/","title":{"rendered":"Tips on types, @defer, and more!"},"content":{"rendered":"\n<p>In the 3-2-1 format of the newsletter, I\u2019m posting a few essential articles to revisit, updates to know about, and one question to ponder:<\/p>\n\n\n\n<p><strong>Three short articles to revisit:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>TypeScript is one of the best tools in the Angular toolbox, especially when using types properly. You can (and most likely must) use types with <a href=\"https:\/\/www.angulartraining.com\/daily-newsletter\/best-practice-using-types-with-the-httpclient\/\">generics and the HttpClient<\/a> to specify the type of your data responses. This also applies to signals (as shown in <a href=\"https:\/\/blog.angulartraining.com\/angular-signal-based-components-tutorial-4e4b4b1dfa96\" target=\"_blank\" rel=\"noopener\" title=\"\">these examples<\/a>), <a href=\"https:\/\/blog.angulartraining.com\/signals-http-httpresource-tutorial-bf8792e9bda0#:~:text=from%20the%20server%3A-,resource%20%3D%20httpResource%3CUserList%3E,-(%27https%3A\/\/dummyjson\" target=\"_blank\" rel=\"noopener\" title=\"\">resources<\/a>, <a href=\"https:\/\/blog.angulartraining.com\/rxjs-subjects-a-tutorial-4dcce0e9637f#:~:text=getData()%3A%20Subject%3CData%3E\" target=\"_blank\" rel=\"noopener\" title=\"\">subjects<\/a>, and everything else. And always remember that using <a href=\"https:\/\/www.angulartraining.com\/daily-newsletter\/typescript-any-vs-unknown\/\" target=\"_blank\" rel=\"noopener\" title=\"\"><em>any <\/em>is evil<\/a>.<\/li>\n<\/ul>\n\n\n\n<p><strong>Two updates worth knowing about:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The recording of my 1-hour talk &#8220;<a href=\"https:\/\/www.youtube.com\/watch?v=cc8Z1ZKUGSc\" target=\"_blank\" rel=\"noopener\" title=\"\">Intro to Cypress for end-to-end testing<\/a>&#8221; can be found on YouTube. It was too short to cover everything, but it still gives a good overview of what Cypress is all about.<\/li>\n\n\n\n<li><a href=\"https:\/\/io.google\/2025\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Google I\/O<\/a> is coming soon on May 20-21. It&#8217;s a free hybrid event to learn about the latest in Angular, web technologies, and even AI and all things Google if you&#8217;re so inclined.<\/li>\n<\/ul>\n\n\n\n<p><strong>One question to ponder:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Have you considered using <a href=\"https:\/\/www.angulartraining.com\/daily-newsletter\/angular-17-lazy-loading-with-defer\/\" target=\"_blank\" rel=\"noopener\" title=\"\">@defer<\/a> in your apps? It&#8217;s the most flexible and configurable option to speed up your Angular applications with lazy-loading and rendering. For instance, if your application has very long pages with a lot of scrolling, you could lazy load the bottom of such pages while scrolling (or using other <a href=\"https:\/\/www.angulartraining.com\/daily-newsletter\/angular-17-trigger-options-for-defer\/\" target=\"_blank\" rel=\"noopener\" title=\"\">triggers<\/a>), making the initial page load much faster.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the 3-2-1 format of the newsletter, I\u2019m posting a few essential articles to revisit, updates to know about, and one question to ponder: Three short articles to revisit: Two updates worth knowing about: One question to ponder:<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,31,3],"tags":[],"class_list":["post-2297","post","type-post","status-publish","format-standard","hentry","category-angular","category-best-practices","category-typescript"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts\/2297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/comments?post=2297"}],"version-history":[{"count":2,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts\/2297\/revisions"}],"predecessor-version":[{"id":2299,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/posts\/2297\/revisions\/2299"}],"wp:attachment":[{"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/media?parent=2297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/categories?post=2297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.angulartraining.com\/daily-newsletter\/wp-json\/wp\/v2\/tags?post=2297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}