{"id":985,"date":"2020-10-26T17:00:00","date_gmt":"2020-10-26T16:00:00","guid":{"rendered":"http:\/\/cmagazine.test\/why-should-you-care-to-learn-typescript\/"},"modified":"2022-01-05T20:06:14","modified_gmt":"2022-01-05T19:06:14","slug":"learning-typescript","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/","title":{"rendered":"Why Should You Care to Learn TypeScript?"},"content":{"rendered":"\t\t\t\t<div class=\"wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-856ce4d2      \"\n\t\t\t\t\tdata-scroll= \"1\"\n\t\t\t\t\tdata-offset= \"30\"\n\t\t\t\t\tstyle=\"\"\n\t\t\t\t>\n\t\t\t\t<div class=\"uagb-toc__wrap\">\n\t\t\t\t\t\t<div class=\"uagb-toc__title\">\n\t\t\t\t\t\t\tTable Of Contents\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"uagb-toc__list-wrap \">\n\t\t\t\t\t\t<ol class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#you-are-already-know-typescript-almost\" class=\"uagb-toc-link__trigger\">You are already know TypeScript (almost)<\/a><li class=\"uagb-toc__list\"><a href=\"#it-is-very-easy-to-get-started-with-typescript\" class=\"uagb-toc-link__trigger\">It is very easy to get started with TypeScript<\/a><li class=\"uagb-toc__list\"><a href=\"#compilation-has-its-adavantages\" class=\"uagb-toc-link__trigger\">Compilation has its adavantages<\/a><li class=\"uagb-toc__list\"><a href=\"#data-binding-is-safer-in-typescript\" class=\"uagb-toc-link__trigger\">Data binding is safer in TypeScript<\/a><li class=\"uagb-toc__list\"><a href=\"#typescript-allows-oop-like-a-pro\" class=\"uagb-toc-link__trigger\">TypeScript allows OOP like a pro<\/a><li class=\"uagb-toc__list\"><a href=\"#reuse-code-with-type-safe-generics\" class=\"uagb-toc-link__trigger\">Reuse code with type-safe generics<\/a><li class=\"uagb-toc__list\"><a href=\"#typescript-has-decorators-that-dont-decorate\" class=\"uagb-toc-link__trigger\">TypeScript has decorators that don\u2019t decorate<\/a><li class=\"uagb-toc__list\"><a href=\"#conclusions\" class=\"uagb-toc-link__trigger\">Conclusions<\/a><li class=\"uagb-toc__list\"><a href=\"#want-to-launch-a-developer-event-despite-the-challenges-of-covid-19\" class=\"uagb-toc-link__trigger\">Want to launch a developer event despite the challenges of  COVID-19?<\/a><\/ol>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\n\n\n<p class=\"eplus-oRYHJU\">One of the most intriguing innovations of web technologies is the <strong style=\"user-select: auto;\"><span style=\"user-select: auto;\" id=\"urn:enhancement-8202da05\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span><\/strong> <span style=\"user-select: auto;\" id=\"urn:enhancement-d8408183\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/programming_languages\">programming language<\/span>. Although very powerful and easily integrated into the existing <span style=\"user-select: auto;\" id=\"urn:enhancement-fa03c4de\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> ecosystem, it is not as widely adopted yet.<\/p>\n\n\n\n<p class=\"eplus-P5638c\">Nevertheless, it has the potential to change dramatically the way we design <span id=\"urn:enhancement-6f25ec9d\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/web_application\">web applications<\/span>. It is no surprise that this is one of the hottest topic at the Spanish edition of <strong><span id=\"urn:local-annotation-816286\" class=\"textannotation disambiguated\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/codemotion\">Codemotion<\/span> Online Tech Conference<\/strong>, which will be held on November 3-4-5. If you&#8217;ll attend (tickets are free), you should not miss the Manuel Carrasco Mo\u00f1ino&#8217;s talk about <em>The perfect cocktail: <span id=\"urn:enhancement-1285d778\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_software_platform\">Java<\/span> + <span id=\"urn:enhancement-de8e79bf\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">Typescript<\/span><\/em> (<a href=\"https:\/\/events.codemotion.com\/conferences\/milan\/2019\/wp-content\/themes\/event\/detail-talk.php?detail=13152\">check the agenda here<\/a>).<\/p>\n\n\n\n<p class=\"eplus-q50Ujl\">If you have been away from <span id=\"urn:enhancement-5e508b0d\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/web_development\">web development<\/span> in the last years, coming back to it could be quite a shocking <span id=\"urn:enhancement-a05af756\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/experience\">experience<\/span>. Basically everything you knew has changed. Things are evolving so fast that it feels like it keeps on changing literally as you type code.<\/p>\n\n\n\n<p class=\"eplus-JoV4RL\">Even good old <a href=\"https:\/\/www.codemotion.com\/magazine\/dev-hub\/javascript\/javascript-frameworks-guide\/\" target=\"_blank\" rel=\"noopener\">JavaScript is almost unrecognizable under all that heavy framework<\/a> make-up, and now it runs server-side too! The good news is that even if you have to learn new stuff, the change is for good and can help you writing less and better.<\/p>\n\n\n\n<p class=\"eplus-nSgj3A\">Learn <span id=\"urn:enhancement-d28a346\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> and you will unleash the power of strongly typed languages into the <span id=\"urn:enhancement-8994bff5\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> ecosystem. But more important, you will have an expressive language to model complex <span id=\"urn:enhancement-bfbba941\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span>.<\/p>\n\n\n\n<h2 class=\"eplus-IPi3Na wp-block-heading\" id=\"h-you-are-already-know-typescript-almost\">You are already know TypeScript (almost)<\/h2>\n\n\n\n<p class=\"eplus-oz2rSG\"><span id=\"urn:enhancement-d12dd2a8\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> is a <span id=\"urn:enhancement-7806bcfb\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/inheritance_object-oriented_programming\">super<\/span>-set of the <span id=\"urn:enhancement-88b41d11\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> <span id=\"urn:enhancement-35d82731\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/programming_languages\">programming language<\/span>, so it is not very different from what you are used to if you are familiar with <span id=\"urn:enhancement-71249650\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/web_development\">web development<\/span>.<\/p>\n\n\n\n<p class=\"eplus-jtF758\">Though it has several distinctive features, <span id=\"urn:enhancement-ba3fecc2\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> is designed to integrate seamlessly with the <span id=\"urn:enhancement-4093c4c2\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> ecosystem. This means that it is completely transparent for the target environment, giving you the freedom to use <span id=\"urn:enhancement-fb134b8a\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> everywhere you can run <span id=\"urn:enhancement-6f88c294\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span>.<\/p>\n\n\n\n<div class=\"wp-block-image eplus-TReVPD\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/10\/Senza-titolo-1-6-1024x576.jpg\" alt=\"web development typescript\" class=\"wp-image-11753\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/10\/Senza-titolo-1-6-1024x576.jpg 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/10\/Senza-titolo-1-6-300x169.jpg 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/10\/Senza-titolo-1-6-768x432.jpg 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/10\/Senza-titolo-1-6-896x504.jpg 896w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/10\/Senza-titolo-1-6-400x225.jpg 400w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/10\/Senza-titolo-1-6.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"eplus-HAEJA3 wp-block-heading\" id=\"h-it-is-very-easy-to-get-started-with-typescript\">It is very easy to get started with TypeScript<\/h2>\n\n\n\n<p class=\"eplus-azw0UX\">Getting started with <span id=\"urn:enhancement-b5082179\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> is quite simple, especially if you are used to Node.js. The following <span id=\"urn:enhancement-b9cc1078\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/command_computing\">command<\/span> will install the <span id=\"urn:enhancement-e002ff98\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> <span id=\"urn:enhancement-c320da1e\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/programming_tool\">tools<\/span> on your <span id=\"urn:enhancement-3c2c6e06\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/computer\">computer<\/span>:<\/p>\n\n\n<pre class=\"wp-block-code eplus-lSyMlJ\"><span><code class=\"hljs\">npm install -g typescript<\/code><\/span><\/pre>\n\n\n<p class=\"eplus-9cZ8QU\">Now you can start experimenting with your <span id=\"urn:enhancement-94129f97\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/integrated_development_environment\">IDE<\/span> of choice. Many <span id=\"urn:enhancement-48010c11\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/programming_tool\">tools<\/span> already provide an extended support to <span id=\"urn:enhancement-511a3f3a\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> features. As an example, <span id=\"urn:enhancement-de2f9afa\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/microsoft_visual_studio\">Visual Studio<\/span> Code has built-in <span id=\"urn:enhancement-19f622ad\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/syntax_programming_languages\">syntax<\/span>-highlight, <span id=\"urn:enhancement-33fa1aa8\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/autocomplete\">code completion<\/span> and <span id=\"urn:enhancement-699dd38\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/debugging\">debugging<\/span> <span id=\"urn:enhancement-e6a654cd\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/utility_software\">utilities<\/span> that will make <span id=\"urn:enhancement-c223e073\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> programming a smooth <span id=\"urn:enhancement-38ec856c\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/experience\">experience<\/span>.<\/p>\n\n\n\n<h2 class=\"eplus-4EHjgX wp-block-heading\" id=\"h-compilation-has-its-adavantages\">Compilation has its adavantages<\/h2>\n\n\n\n<p class=\"eplus-m2bmJN\">One of the major breakthrough of <span id=\"urn:enhancement-73ec65a2\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> over <span id=\"urn:enhancement-6ee46a82\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> is the fact that <span id=\"urn:enhancement-2a738ab9\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> is a <strong>compiled language<\/strong>.<\/p>\n\n\n\n<p class=\"eplus-94ujx4\">Technically speaking, compiling <span id=\"urn:enhancement-9e58d440\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> will not produce machine code. It is indeed a translation to plain <span id=\"urn:enhancement-7e865d75\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span>, therefore the verb <i><span id=\"urn:enhancement-a106cc86\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/source-to-source_compiler\">transpile<\/span><\/i> is often used to refer to this step.<\/p>\n\n\n\n<p class=\"eplus-rx46ov\">As for other languages, the use of a compiler is an enabling factor for the <span id=\"urn:enhancement-3019a9f3\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/implementation\">implementation<\/span> of <b>static <span id=\"urn:enhancement-ee4c7329\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/syntax_programming_languages\">syntax<\/span> checking<\/b>. For the compilation <span id=\"urn:enhancement-faff0c52\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/process_computing\">process<\/span> to be successful, every part of your <span id=\"urn:enhancement-f6b64510\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/computer_program\">program<\/span> must comply with <span id=\"urn:enhancement-1ebb096e\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> <span id=\"urn:enhancement-1e3cabd7\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/syntax_programming_languages\">syntax<\/span> rules, while when you interpret <span id=\"urn:enhancement-d71867b4\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> code, the checks are done only at <span id=\"urn:enhancement-ac033103\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/execution_computing\">run<\/span>-time. This means that only the parts of your <span id=\"urn:enhancement-a65b08b2\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/source_code\">code<\/span> that are effectively <span id=\"urn:enhancement-ef0b3483\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/execution_computing\">executed<\/span> will be analyzed by the interpreter and therefore, any modification to your <span id=\"urn:enhancement-f9203203\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> <span id=\"urn:enhancement-41426a18\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/computer_program\">program<\/span> has the potential to introduce regressions, silently breaking even untouched lines of your <span id=\"urn:enhancement-e92e2f0\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/source_code\">code<\/span>.<\/p>\n\n\n\n<p class=\"eplus-54c2Xw\"><span id=\"urn:enhancement-c7ed5f16\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> code is compiled to plain <span id=\"urn:enhancement-b1e97f6d\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> with the <b>tsc<\/b> <span id=\"urn:enhancement-7716dccf\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/command_computing\">command<\/span> line <span id=\"urn:enhancement-9cb04a2e\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/tool\">tool<\/span>:<\/p>\n\n\n<pre class=\"wp-block-code eplus-vzgB0N\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">tsc<\/span> <span class=\"hljs-selector-tag\">hello<\/span><span class=\"hljs-selector-class\">.ts<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"eplus-NLrxP9\">As result of the compilation step, the output file <i>hello.js <\/i>will be created, ready to be interpreted by the browser or, if you have the Node run-time installed on your <span id=\"urn:enhancement-3595ca23\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/computer\">computer<\/span>, with the following <span id=\"urn:enhancement-bf43a59a\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/command_computing\">command<\/span>:<\/p>\n\n\n<pre class=\"wp-block-code eplus-gkbbc3\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">node<\/span> <span class=\"hljs-selector-tag\">hello<\/span><span class=\"hljs-selector-class\">.js<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"eplus-RvHbmi wp-block-heading\" id=\"h-data-binding-is-safer-in-typescript\">Data binding is safer in TypeScript<\/h2>\n\n\n\n<p class=\"eplus-yz1V4A\">Types, as the name itself implies, are the core feature of <span id=\"urn:enhancement-5a7922c9\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span>. Since <span id=\"urn:enhancement-d172656d\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> is a loosely typed language, <b><span id=\"urn:enhancement-3eb3ab7d\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/data\">data<\/span> binding<\/b> is a challenging task when developing complex <span id=\"urn:enhancement-fbc251e1\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span>.<\/p>\n\n\n\n<p class=\"eplus-NvK1mT\">The use of types in object definition allows to check at <span id=\"urn:enhancement-aa0aeb3b\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/compile_time\">compile time<\/span> if the <span id=\"urn:enhancement-5abb1425\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/data\">data<\/span> <span id=\"urn:enhancement-c04b120c\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/structure\">structure<\/span> you are using fit in the <span id=\"urn:enhancement-de7f4b66\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/source_code\">code<\/span> that is handling it. As an example, a number can be used in arithmetical operations, while a string is not suitable. The following code snippet show the use of types in variable definition, function arguments and return values:<\/p>\n\n\n\n<script src=\"https:\/\/pastebin.com\/embed_js\/P8YpDWcF\"><\/script>\n\n\n\n<p class=\"eplus-94QQwB\"><span id=\"urn:enhancement-57140313\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/compiler\">Compiling<\/span> this <span id=\"urn:enhancement-50be7d0c\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/source_code\">code<\/span> will issue an error message to let you know that a string is not supposed to be used in a <span id=\"urn:enhancement-4108ffe2\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/context_computing\">context<\/span> designed to handle only numeric <span id=\"urn:enhancement-d8cb1edc\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/data\">data<\/span> in <span id=\"urn:enhancement-dd3d55e2\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span>. Nonetheless, the compilation <span id=\"urn:enhancement-6b0e2f7f\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/process_computing\">process<\/span> will output well-formed <span id=\"urn:enhancement-22d953f4\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> code that will print on screen a NaN value (not a number) when executed.<\/p>\n\n\n\n<p class=\"eplus-kj2Ss2\">While in this trivial example it is not a big deal whether you print a valid number or not, in other <span id=\"urn:enhancement-6facbb8a\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/context_computing\">contexts<\/span> it could be critical. Therefore, being notified of this potential issue at <span id=\"urn:enhancement-617a50ba\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/compile_time\">compile time<\/span> will allow you to fix this behavior in time.<\/p>\n\n\n\n<p class=\"eplus-DSNyoB\">Types however, are optional in <span id=\"urn:enhancement-ef15d6a0\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> since it is totally back-compatible with <span id=\"urn:enhancement-d8b3d3c\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span>. This explains why these errors are not critical for the compilation <span id=\"urn:enhancement-173b8be0\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/process_computing\">process<\/span>.<\/p>\n\n\n\n<h2 class=\"eplus-QutEEc wp-block-heading\" id=\"h-typescript-allows-oop-like-a-pro\">TypeScript allows OOP like a pro<\/h2>\n\n\n\n<p class=\"eplus-NKVfrY\"><span id=\"urn:enhancement-10e545f8\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/class_computer_programming\">Class definition<\/span> and the <span id=\"urn:enhancement-e84ab529\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/inheritance_object-oriented_programming\">inheritance<\/span> model in <span id=\"urn:enhancement-9ffbc164\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> mimics all the major syntactic features of <span id=\"urn:enhancement-d5201351\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/high-level_programming_language\">high-level<\/span> <span id=\"urn:enhancement-8799b63\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/object-oriented_programming\">OOP<\/span> <a href=\"https:\/\/www.codemotion.com\/magazine\/dev-hub\/backend-dev\/programming-languages-how-to-choose-the-best-one\/\">programming languages<\/a> like <span id=\"urn:enhancement-b2210f3a\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_programming_language\">Java<\/span> or <span id=\"urn:enhancement-bcac6cf8\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/c_sharp_programming_language\">C#<\/span>, though it is based on the <b>prototyping<\/b> chain system of <span id=\"urn:enhancement-7bc4c2a1\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span>.<\/p>\n\n\n\n<p class=\"eplus-VoHOZm\">The major advantage is the capability of outlining complex data models with a compact syntax that matches the expectations of <span id=\"urn:enhancement-1fd66907\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/software_developer\">developers<\/span> that are familiar with <span id=\"urn:enhancement-c4c58099\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/object-oriented_programming\">OOP<\/span>.<\/p>\n\n\n\n<div class=\"wp-block-image eplus-56VknG\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/safar-safarov-MSN8TFhJ0is-unsplash-1024x576.jpg\" alt=\"coding\" class=\"wp-image-11755\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/safar-safarov-MSN8TFhJ0is-unsplash-1024x576.jpg 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/safar-safarov-MSN8TFhJ0is-unsplash-300x169.jpg 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/safar-safarov-MSN8TFhJ0is-unsplash-768x432.jpg 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/safar-safarov-MSN8TFhJ0is-unsplash-896x504.jpg 896w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/safar-safarov-MSN8TFhJ0is-unsplash-400x225.jpg 400w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/10\/safar-safarov-MSN8TFhJ0is-unsplash.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p class=\"eplus-2nC68d\">TypeScript delivers true <span id=\"urn:enhancement-fa162199\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/encapsulation_object-oriented_programming\">encapsulation<\/span> with <b>access modifiers<\/b>, polymorphic behavior with <b>abstract<\/b> <span id=\"urn:enhancement-ac1c73f0\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/class_computer_programming\">classes<\/span> and multiple <span id=\"urn:enhancement-7a40ccf\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/inheritance_object-oriented_programming\">inheritance<\/span> through <b><span id=\"urn:enhancement-5330b561\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/interface_computing\">interfaces<\/span><\/b>. This expressive power is unmatched even in the latest revision of the <span id=\"urn:enhancement-12a6cb36\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/ecmascript\">ECMAScript<\/span> language, though it includes specific keywords for <span id=\"urn:enhancement-b986fa34\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/class_computer_programming\">class definition<\/span> and <span id=\"urn:enhancement-8c23600\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/inheritance_object-oriented_programming\">inheritance<\/span>.<\/p>\n\n\n\n<p class=\"eplus-5IsfxI\">In a world where <b><span id=\"urn:enhancement-4a2929db\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/component-based_software_engineering\">components<\/span><\/b> have become the building blocks for modern <span id=\"urn:enhancement-cdd54f32\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/web_application\">web applications<\/span>, this aspect of TypeScript is clearly appealing, as <span id=\"urn:enhancement-79aa4aa9\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/inheritance_object-oriented_programming\">inheritance<\/span> is one of the best ways to ensure code consistency and re-usability.<\/p>\n\n\n\n<p class=\"eplus-x8leGy\">You may indeed think of <a href=\"https:\/\/www.codemotion.com\/magazine\/dev-hub\/web-developer\/thinking-in-web-component\/\">web components<\/a> as a way to reconcile <span id=\"urn:enhancement-27c73019\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/object-oriented_programming\">OOP<\/span> concepts with <span id=\"urn:enhancement-15c87cd4\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/web_development\">web development<\/span> practices, and in this sense <span id=\"urn:enhancement-2ca5c8b1\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> comes ready to party.<\/p>\n\n\n\n<h2 class=\"eplus-Ia76bk wp-block-heading\" id=\"h-reuse-code-with-type-safe-generics\">Reuse code with type-safe generics<\/h2>\n\n\n\n<p class=\"eplus-rYrHUK\"><span id=\"urn:enhancement-f3816d6c\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/compiler\">Compilation<\/span> is also the enabling factor for the <span id=\"urn:enhancement-60df20db\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/implementation\">implementation<\/span> of generics in <span id=\"urn:enhancement-59a32617\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span>. Similarly to other <span id=\"urn:enhancement-8d40ac5b\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/high-level_programming_language\">high level languages<\/span>, like <span id=\"urn:enhancement-7a9f91cc\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/c__\">C++<\/span> or <span id=\"urn:enhancement-62d726c5\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_programming_language\">Java<\/span>, generic <span id=\"urn:enhancement-49d6bcf9\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/rewrite_programming\">programming<\/span> is a way of adapting the same piece of <span id=\"urn:enhancement-11ef50c6\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/source_code\">code<\/span> to multiple <span id=\"urn:enhancement-36b4b8ac\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/data\">data<\/span> types.<\/p>\n\n\n\n<p class=\"eplus-KsrTuP\"><span id=\"urn:enhancement-f435119f\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/interface_computing\">Interfaces<\/span>, similarly to <span id=\"urn:enhancement-40d6e4c1\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/class_computer_programming\">classes<\/span>, are used to define archetypal <span id=\"urn:enhancement-a8d5544b\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/data\">data<\/span> types, but with an higher level of abstraction.<\/p>\n\n\n\n<p class=\"eplus-oa7eg8\"><span id=\"urn:enhancement-6c6e6ef0\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/generic_programming\">Generics<\/span> and interfaces can be used together to implement type-safe template <span id=\"urn:enhancement-84a591b2\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/source_code\">code<\/span>, as shown in the following example:<\/p>\n\n\n\n<script src=\"https:\/\/pastebin.com\/embed_js\/fxJ7fHFp\"><\/script>\n\n\n\n<p class=\"eplus-HodLmj\">In this example, the <i>Validable<\/i> interface restricts the use of the generic function <i>validate <\/i>only to <span id=\"urn:enhancement-9fa57ca5\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/instance_computer_science\">instances<\/span> that effectively define a <span id=\"urn:enhancement-997db2a2\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/method_computer_programming\">method<\/span> named <i>isValid<\/i>, regardless of the validation logic, that is very different for the <i>Point<\/i> and the <i>Vehicle<\/i> <span id=\"urn:enhancement-cf1c17e2\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/class_computer_programming\">classes<\/span>.<\/p>\n\n\n\n<p class=\"eplus-n1LIDH\">At the same time, the invocation of <i>validate<\/i> on <span id=\"urn:enhancement-33aba33\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/object_computer_science\">objects<\/span> that are not <i>Validable<\/i> will issue a <span id=\"urn:enhancement-7875d086\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/compilation_error\">compilation error<\/span>. Once again, compilation prevents run-time errors on unsuitable <span id=\"urn:enhancement-ab9053b\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/instance_computer_science\">instances<\/span> and enables effective code reuse through generics.<\/p>\n\n\n\n<p class=\"eplus-2nqJ1v\">Generics are one of those advanced features of <span id=\"urn:enhancement-f1d34219\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/typescript_2\">TypeScript<\/span> that you may not find needful at first. Nevertheless they allow to implement with ease a lot of design patterns that can fit in many scenarios, so they are definitely worth to understand at least in broad terms.<\/p>\n\n\n\n<h2 class=\"eplus-MxSxoa wp-block-heading\" id=\"h-typescript-has-decorators-that-don-t-decorate\">TypeScript has decorators that don\u2019t decorate<\/h2>\n\n\n\n<div class=\"wp-block-image eplus-5cTzlY\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/10\/ssss-1024x576.jpg\" alt=\"\" class=\"wp-image-11756\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/10\/ssss-1024x576.jpg 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/10\/ssss-300x169.jpg 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/10\/ssss-768x432.jpg 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/10\/ssss-896x504.jpg 896w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/10\/ssss-400x225.jpg 400w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/10\/ssss.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p class=\"eplus-1wypxr\">Decorators are still an experimental feature of TypeScript. You have to enable the support to compilation with the following options:<\/p>\n\n\n<pre class=\"wp-block-code eplus-DhGno9\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">tsc<\/span> <span class=\"hljs-selector-tag\">source<\/span><span class=\"hljs-selector-class\">.ts<\/span> <span class=\"hljs-selector-tag\">--target<\/span> <span class=\"hljs-selector-tag\">ES5<\/span> \u2013<span class=\"hljs-selector-tag\">experimentalDecorators<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"eplus-ND2ALw\">Decorators are applicable to classes, methods, properties and function arguments. Their name may sound a little misleading, since they are far from cosmetic, and actually apply deep changes to your code, in a meta-programming fashion.<\/p>\n\n\n\n<p class=\"eplus-katXzB\">For instance decorators are widely used in Angular for the sake of <b>dependency injection<\/b>. For the majority of developers, their use may fit in scenarios that require to address so-called <b>cross-cutting concerns<\/b>.<\/p>\n\n\n\n<p class=\"eplus-auGphh\">As the name implies, there are general requirements that apply to many parts of your business logic. User authentication for instance is a prerequisite to operations that require some level or privilege. Therefore, you may need to verify the credentials in many independent contexts. In this sense, authentication is a <i>cross-cutting concern.&nbsp;<\/i><\/p>\n\n\n\n<p class=\"eplus-PSJwoI\">In many cases, the only option may be to implement the authentication checks in a specific function and invoke it everywhere you need it. Beside its simplicity, the major drawback of this solution is the need to actually modify working pieces of code to full-fill a non-functional requirement.<\/p>\n\n\n\n<p class=\"eplus-PdmHBo\">You may recognize this scenario as the perfect fit for <b>aspect-oriented programming<\/b> (AOP) and that\u2019s exactly what decorators are meant for.<\/p>\n\n\n\n<p class=\"eplus-xxeckR\">The following example gives a taste of what decorators can do in such a scenario:<\/p>\n\n\n\n<script src=\"https:\/\/pastebin.com\/embed_js\/1AwcBR1N\"><\/script>\n\n\n\n<p class=\"eplus-tsmsuC\">A decorator is used to add authentication to the methods of a class that implement an HTTP service.<\/p>\n\n\n\n<p class=\"eplus-hV41Mk\">The function named <i>authorizedOnly<\/i> is attached with the decorator syntax @func_name to the methods of the dummy class <i>MyService<\/i> that need user authentication.<\/p>\n\n\n\n<p class=\"eplus-6UcZrn\">The body of&nbsp; <i>authorizedOnly<\/i> performs user authentication calling the external function <i>isUserLoggedIn <\/i>and on negative result, it injects an unnamed function in place of the decorated method that was originally invoked, showing an error message. In this example, authentication will always fail, unless you toggle the value returned by <i>isUserLoggedIn<\/i>.<\/p>\n\n\n\n<p class=\"eplus-RI1vtG\">No matter how complex the real business logic is, thanks to decorators it will be added to every method with a simple tag, and mostly important without modifications to the original code.<\/p>\n\n\n\n<h2 class=\"eplus-aRCkuk wp-block-heading\" id=\"h-conclusions\">Conclusions<\/h2>\n\n\n\n<p class=\"eplus-7SaXnY\">TypeScript is more than just JavaScript with types. Adding a strongly-typed sub system to a programming language has several side effects, the most relevant being the compilation process.<\/p>\n\n\n\n<p class=\"eplus-fYuAq2\">TypeScript\u2019s static type checking and its advanced features like generics and decorators will probably extend the life of the JavaScript foundation for many other years to come.<\/p>\n\n\n\n<p class=\"eplus-ySSuq4\">Nevertheless, transitioning from JavaScript to TypeScript requires a little effort to recognize the significant differences between the two beyond the apparent similarities. But if want to be ready for the next generation of frameworks and tools, getting used to TypeScript now is a must.<\/p>\n\n\n\n<p class=\"eplus-apIDF6\">If you want to learn more about this topic, don&#8217;t miss Manuel Carrasco Mo\u00f1ino&#8217;s talk, <em style=\"user-select: auto;\">The perfect cocktail: Java + Typescript<\/em>, at the Spanish edition of <strong style=\"user-select: auto;\">Codemotion Online Tech Conference<\/strong> on November 3-4-5: <a style=\"user-select: auto;\" href=\"https:\/\/events.codemotion.com\/conferences\/online\/2020\/online-tech-conference-spanish-edition\/\">free tickets are still available<\/a>!<\/p>\n\n\n\n<h2 class=\"eplus-viWvHk wp-block-heading\" id=\"h-want-to-launch-a-developer-event-despite-the-challenges-of-covid-19\">Want to launch a developer event despite the challenges of  COVID-19?<\/h2>\n\n\n\n<p class=\"eplus-Dlirgv\">If you want to know more about how modern technologies and tools can support you for \u2013 and during \u2013 the organisation of a virtual event, don\u2019t miss this article showcasing the best tools we used to&nbsp;<a href=\"https:\/\/www.codemotion.com\/magazine\/articles\/events\/hosting-virtual-conference\/\">host our online conferences<\/a>&nbsp;since the COVID-19 outbreak.<\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>One of the most intriguing innovations of web technologies is the TypeScript programming language. Although very powerful and easily integrated into the existing JavaScript ecosystem, it is not as widely adopted yet. Nevertheless, it has the potential to change dramatically the way we design web applications. It is no surprise that this is one of&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/\">Read more<\/a><\/p>\n","protected":false},"author":33,"featured_media":11749,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":7,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[8],"tags":[],"collections":[],"class_list":{"0":"post-985","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-javascript","8":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Why Should You Care to Learn TypeScript? - Codemotion Magazine<\/title>\n<meta name=\"description\" content=\"One of the most intriguing innovations of web technologies is the TypeScript programming language, a super-set of JavaScript: learn more in this article!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Why Should You Care to Learn TypeScript?\" \/>\n<meta property=\"og:description\" content=\"One of the most intriguing innovations of web technologies is the TypeScript programming language, a super-set of JavaScript: learn more in this article!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-10-26T16:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-05T19:06:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Gabriella Giordano\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gabriella Giordano\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/javascript\\\/learning-typescript\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/javascript\\\/learning-typescript\\\/\"},\"author\":{\"name\":\"Gabriella Giordano\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/34dc42d951a0781e0bf59e7eb3349cc9\"},\"headline\":\"Why Should You Care to Learn TypeScript?\",\"datePublished\":\"2020-10-26T16:00:00+00:00\",\"dateModified\":\"2022-01-05T19:06:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/javascript\\\/learning-typescript\\\/\"},\"wordCount\":1763,\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/javascript\\\/learning-typescript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/altumcode-dC6Pb2JdAqs-unsplash.jpg\",\"articleSection\":[\"JavaScript\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/javascript\\\/learning-typescript\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/javascript\\\/learning-typescript\\\/\",\"name\":\"Why Should You Care to Learn TypeScript? - Codemotion Magazine\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/javascript\\\/learning-typescript\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/javascript\\\/learning-typescript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/altumcode-dC6Pb2JdAqs-unsplash.jpg\",\"datePublished\":\"2020-10-26T16:00:00+00:00\",\"dateModified\":\"2022-01-05T19:06:14+00:00\",\"description\":\"One of the most intriguing innovations of web technologies is the TypeScript programming language, a super-set of JavaScript: learn more in this article!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/javascript\\\/learning-typescript\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/javascript\\\/learning-typescript\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/javascript\\\/learning-typescript\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/altumcode-dC6Pb2JdAqs-unsplash.jpg\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/altumcode-dC6Pb2JdAqs-unsplash.jpg\",\"width\":1200,\"height\":675,\"caption\":\"coding\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/javascript\\\/learning-typescript\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Frontend\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Web Developer\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/web-developer\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Why Should You Care to Learn TypeScript?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Codemotion.Italy\\\/\",\"https:\\\/\\\/x.com\\\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/34dc42d951a0781e0bf59e7eb3349cc9\",\"name\":\"Gabriella Giordano\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1f774e60e728e161d77afc375d94c8670bd2d0e48751456650aa735180078b7f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1f774e60e728e161d77afc375d94c8670bd2d0e48751456650aa735180078b7f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1f774e60e728e161d77afc375d94c8670bd2d0e48751456650aa735180078b7f?s=96&d=mm&r=g\",\"caption\":\"Gabriella Giordano\"},\"description\":\"I'm a software engineer and I do a lot of Qt\\\/C++ programming for work, and also for fun :) Currently, I'm running my own ICT consulting company that provides custom software development services and training for IT professionals.\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/author\\\/gabriella-giordano\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Why Should You Care to Learn TypeScript? - Codemotion Magazine","description":"One of the most intriguing innovations of web technologies is the TypeScript programming language, a super-set of JavaScript: learn more in this article!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/","og_locale":"en_US","og_type":"article","og_title":"Why Should You Care to Learn TypeScript?","og_description":"One of the most intriguing innovations of web technologies is the TypeScript programming language, a super-set of JavaScript: learn more in this article!","og_url":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2020-10-26T16:00:00+00:00","article_modified_time":"2022-01-05T19:06:14+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash.jpg","type":"image\/jpeg"}],"author":"Gabriella Giordano","twitter_card":"summary_large_image","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Gabriella Giordano","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/"},"author":{"name":"Gabriella Giordano","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/34dc42d951a0781e0bf59e7eb3349cc9"},"headline":"Why Should You Care to Learn TypeScript?","datePublished":"2020-10-26T16:00:00+00:00","dateModified":"2022-01-05T19:06:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/"},"wordCount":1763,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash.jpg","articleSection":["JavaScript"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/","url":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/","name":"Why Should You Care to Learn TypeScript? - Codemotion Magazine","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash.jpg","datePublished":"2020-10-26T16:00:00+00:00","dateModified":"2022-01-05T19:06:14+00:00","description":"One of the most intriguing innovations of web technologies is the TypeScript programming language, a super-set of JavaScript: learn more in this article!","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash.jpg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash.jpg","width":1200,"height":675,"caption":"coding"},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/learning-typescript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Frontend","item":"https:\/\/www.codemotion.com\/magazine\/frontend\/"},{"@type":"ListItem","position":3,"name":"Web Developer","item":"https:\/\/www.codemotion.com\/magazine\/frontend\/web-developer\/"},{"@type":"ListItem","position":4,"name":"Why Should You Care to Learn TypeScript?"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/34dc42d951a0781e0bf59e7eb3349cc9","name":"Gabriella Giordano","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/1f774e60e728e161d77afc375d94c8670bd2d0e48751456650aa735180078b7f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1f774e60e728e161d77afc375d94c8670bd2d0e48751456650aa735180078b7f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1f774e60e728e161d77afc375d94c8670bd2d0e48751456650aa735180078b7f?s=96&d=mm&r=g","caption":"Gabriella Giordano"},"description":"I'm a software engineer and I do a lot of Qt\/C++ programming for work, and also for fun :) Currently, I'm running my own ICT consulting company that provides custom software development services and training for IT professionals.","url":"https:\/\/www.codemotion.com\/magazine\/author\/gabriella-giordano\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash-600x400.jpg","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash-600x600.jpg","author_info":{"display_name":"Gabriella Giordano","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/gabriella-giordano\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash.jpg",1200,675,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash-150x150.jpg",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash-300x169.jpg",300,169,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash-768x432.jpg",768,432,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash-1024x576.jpg",1024,576,true],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash.jpg",1200,675,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash.jpg",1200,675,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash.jpg",100,56,false],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash-180x128.jpg",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash-896x504.jpg",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash-400x225.jpg",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash-600x400.jpg",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/altumcode-dC6Pb2JdAqs-unsplash-600x600.jpg",600,600,true]},"uagb_author_info":{"display_name":"Gabriella Giordano","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/gabriella-giordano\/"},"uagb_comment_info":0,"uagb_excerpt":"One of the most intriguing innovations of web technologies is the TypeScript programming language. Although very powerful and easily integrated into the existing JavaScript ecosystem, it is not as widely adopted yet. Nevertheless, it has the potential to change dramatically the way we design web applications. It is no surprise that this is one of&#8230;&hellip;","lang":"en","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/985","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/33"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=985"}],"version-history":[{"count":13,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/985\/revisions"}],"predecessor-version":[{"id":15376,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/985\/revisions\/15376"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/11749"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=985"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}