{"id":5075,"date":"2025-03-07T12:20:33","date_gmt":"2025-03-07T15:20:33","guid":{"rendered":"https:\/\/geekblogti.wpengine.com\/?p=5075"},"modified":"2025-03-17T10:47:00","modified_gmt":"2025-03-17T13:47:00","slug":"typescript-3-4-as-novidades","status":"publish","type":"post","link":"https:\/\/www.geekhunter.com/pt/blog\/typescript-3-4-as-novidades\/","title":{"rendered":"TypeScript 3.4: as novidades"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Se voc\u00ea n\u00e3o conhece muito o Typescript, pelo menos \u00e9 prov\u00e1vel que j\u00e1  tenha ouvido falar. Com certeza voc\u00ea j\u00e1 se deparou com algum chefe, amigo ou algum conte\u00fado na internet tratando sobre o assunto. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Resumidamente Typescript \u00e9 um <em>superset <\/em>(um superconjunto) de<strong><a href=\"https:\/\/geekblogti.wpengine.com\/linguagem-javascript-um-guia-para-iniciantes\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" JavaScript (abre numa nova aba)\"> JavaScript<\/a><\/strong> desenvolvido pela Microsoft que adiciona tipagem e alguns outros recursos a linguagem. Atualmente est\u00e1 na vers\u00e3o 3.4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As novidades do TypeScrit 3.4 \u00e9 o meu tema de hoje. Vem conferir!<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/bit.ly\/2K60SkM\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2019\/07\/CTA-Quiz-Front-end-4-1024x134.jpg\" alt=\"\" class=\"wp-image-6697\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&gt;&gt;Leitura Recomendada:<\/strong><br><a rel=\"noreferrer noopener\" aria-label=\"Svelte (abre numa nova aba)\" href=\"https:\/\/geekblogti.wpengine.com\/svelte-o-framework-javascript-que-nao-e-um-framework\/\" target=\"_blank\"><strong>Svelte<\/strong><\/a>: o framework JavaScript que n\u00e3o \u00e9 um framework<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-as-novidades-da-vers-o-3-4\">As novidades da vers\u00e3o 3.4<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img fetchpriority=\"high\" decoding=\"async\" width=\"842\" height=\"595\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2019\/04\/typescript-3.42.png\" alt=\"\" class=\"wp-image-5084\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.42.png 842w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.42-150x106.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.42-100x71.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.42-600x424.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.42-450x318.png 450w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.42-764x540.png 764w\" sizes=\"(max-width: 842px) 100vw, 842px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A vers\u00e3o 3.4 do Typescript foi lan\u00e7ada na \u00faltima sexta-feira, dia 29\/03. A nova vers\u00e3o trouxe algumas melhorias interessantes. Fiz um review com a listagem dessas melhorias. <br><br><strong>Confira aqui: <\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-flag-incremental-constru-es-subsequentes-mais-r-pidas\">Flag &#8212; <em>incremental <\/em>&#8211; constru\u00e7\u00f5es subsequentes mais r\u00e1pidas<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de rodar o seu c\u00f3digo Typescript \u00e9 necess\u00e1rio compilar. Uma maneira de fazer isso \u00e9 rodar o Typescript em modo <em>&#8212; watch. <\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nesse caso, quando um arquivo sofre alguma mudan\u00e7a o Typescript \u00e9 capaz de identificar os arquivos que ser\u00e3o afetados e precisam ser recompilados. Isso evita que o seu projeto seja todo recompilado.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para evitar que todos os usu\u00e1rios mantenham um processo <em>tsc &#8211;watch <\/em>rodando, a vers\u00e3o 3.4 do Typescript trouxe uma nova <em>flag <\/em>chamada <br><em>&#8212; incremental.<\/em> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Com isso o Typescript salva um esquema de informa\u00e7\u00f5es do projeto da \u00faltima compila\u00e7\u00e3o e na pr\u00f3xima vez que for invocado com <em>&#8211;incremental<\/em>, ir\u00e1 usar essas informa\u00e7\u00f5es para verificar e compilar as altera\u00e7\u00f5es da melhor maneira poss\u00edvel. <br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Exemplo:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong><br>\/\/ tsconfig.json<br>{<br> &nbsp;&nbsp;&nbsp;\"compilerOptions\": { <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"incremental\": true,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"outDir\": \".\/lib\"<br> &nbsp;&nbsp;&nbsp;},<br> &nbsp;&nbsp;&nbsp;\"include\": [\".\/src\"]<br>}<\/strong> <br><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Quando executamos o comando <em>tsc<\/em>, o TypeScript busca o arquivo .tsbuildinfo no diret\u00f3rio \u201c\/lib\u201d (caso o arquivo n\u00e3o exista, ser\u00e1 criado um novo arquivo).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Veja no quadro abaixo a diferen\u00e7a de tempo adicionando o <em>&#8211;incremental <\/em>no<em> tsconfig.json<\/em> do projeto, utilizando o Visual Studio Code como ferramenta.<br><br><strong>&gt;&gt; Leitura recomendada:<\/strong> <br><strong><a rel=\"noreferrer noopener\" aria-label=\"React vs Vue vs Angular (abre numa nova aba)\" href=\"https:\/\/geekblogti.wpengine.com\/react-vs-vue-vs-angular-qual-escolher\/\" target=\"_blank\">React vs Vue vs Angular<\/a><\/strong>: qual escolher?<br><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>A\u00e7\u00e3o<\/strong><\/td><td><strong>Tempo<\/strong><\/td><\/tr><tr><td>Compila\u00e7\u00e3o sem o <em>&#8211;incremental<\/em><\/td><td>47.54s<\/td><\/tr><tr><td>Primeira compila\u00e7\u00e3o com o <em>&#8211;incremental<\/em><\/td><td>52.77s<\/td><\/tr><tr><td>Compila\u00e7\u00e3o seguinte com o <em>&#8211;incremental<\/em> <\/td><td>11.49s<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-melhorias-para-readonlyarray-e-readonly\">Melhorias para <em>ReadonlyArray<\/em> e <em>Readonly<\/em><\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"842\" height=\"595\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2019\/04\/typescript-3.4-readonlyarray-readonly.png\" alt=\"\" class=\"wp-image-5085\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-readonlyarray-readonly.png 842w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-readonlyarray-readonly-150x106.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-readonlyarray-readonly-100x71.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-readonlyarray-readonly-600x424.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-readonlyarray-readonly-450x318.png 450w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-readonlyarray-readonly-764x540.png 764w\" sizes=\"(max-width: 842px) 100vw, 842px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">O tipo <em>ReadonlyArray<\/em> descreve as arrays que podem ser apenas lidas. Qualquer vari\u00e1vel com uma refer\u00eancia para um <em>ReadonlyArray<\/em> n\u00e3o pode adicionar, remover ou substituir qualquer elemento do <em>array<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><br><strong>function foo(arr: ReadonlyArray&lt;string&gt;) {<br> &nbsp;&nbsp;&nbsp;arr.slice(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/ okay<br> &nbsp;&nbsp;&nbsp;arr.push(\"hello!\"); \/\/ error!<br>}<\/strong><br><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A nova vers\u00e3o do TypeScript 3.4 traz uma nova sintaxe para o <em>ReadonlyArray<\/em> usando um novo modificador <em>readonly<\/em> para tipos de <em>arrays<\/em>.<br><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><br><strong>function foo(arr: readonly string[]) {<br> &nbsp;&nbsp;&nbsp;arr.slice(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/ okay<br> &nbsp;&nbsp;&nbsp;arr.push(\"hello!\"); \/\/ error!<br>}<\/strong><br><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-readonly-tuplas\">Readonly tuplas<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O TypeScript 3.4 tamb\u00e9m traz um novo suporte para tuplas <em>readonly<\/em> . Podemos adicionar a qualquer tipo de tupla a palavra-chave readonly para torn\u00e1-la uma tupla <em>readonly<\/em>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nesse caso como era de se esperar, as tuplas <em>readonly<\/em> s\u00f3 podem ser lidas. <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><br><strong>function foo(pair: readonly [string, string]) {<br> &nbsp;&nbsp;&nbsp;console.log(pair[0]); &nbsp;&nbsp;\/\/ okay<br> &nbsp;&nbsp;&nbsp;pair[1] = \"hello!\"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/ error<br>}<\/strong><br><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-ressalvas\">Ressalvas<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Apesar da semelhan\u00e7a, inclusive com outras linguagens, em TypeScript o modificador <em>readonly<\/em> s\u00f3 pode ser usado em <em>arrays<\/em> e <em>tuplas<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong><br>let err1: readonly Set&lt;number&gt;; &nbsp;\/\/ error!<br>let err2: readonly Array&lt;boolean&gt;; \/\/ error!<br><br>let okay: readonly boolean[]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/ works fine<\/strong> <br><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&gt;&gt;Leitura Recomendada:<\/strong><br>Leia nosso artigo sobre o<a rel=\"noreferrer noopener\" aria-label=\" Framework Angular (abre numa nova aba)\" href=\"https:\/\/geekblogti.wpengine.com\/um-overview-sobre-o-framework-angular\/\" target=\"_blank\"><strong> Framework Angular<\/strong><\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/bit.ly\/2JR0g2F\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2019\/07\/CTA-Rodap\u00e9-Front-end-3-1024x134.jpg\" alt=\"\" class=\"wp-image-6376\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-vari-veis-em-escopo-global-com-globalthis\">Vari\u00e1veis em escopo global com GlobalThis<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"842\" height=\"595\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2019\/04\/typescript-3.4-global-this.png\" alt=\"\" class=\"wp-image-5088\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-global-this.png 842w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-global-this-150x106.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-global-this-100x71.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-global-this-600x424.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-global-this-450x318.png 450w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-global-this-764x540.png 764w\" sizes=\"(max-width: 842px) 100vw, 842px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">O TypeScript 3.4 apresenta uma nova maneira de acessar vari\u00e1veis de escopo global. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por mais surpreendente que seja, em alguns momentos, em nossas aplica\u00e7\u00f5es, o acesso a vari\u00e1veis globais pode ser bem trabalhoso, principalmente por desenvolvermos aplica\u00e7\u00f5es em m\u00f3dulos. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quem nunca teve problema com uma vari\u00e1vel local, &#8220;escondendo&#8221; uma vari\u00e1vel global? Em determinados ambientes \u00e9 poss\u00edvel acessar objetos globais em browser, por meio do <em>window<\/em>, <em>self<\/em>, <em>frame <\/em>ou ainda usar o <em>this, <\/em>fora do <em>strict mode<\/em>. <br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ao contr\u00e1rio das solu\u00e7\u00f5es acima, o <em>globalThis<\/em> oferece uma maneira padr\u00e3o de acessar o escopo global, em diferentes ambientes. Veja o exemplo a seguir: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong><br>\/\/ arquivo global:<br><br>var valor = 100;<br><br>\/\/ Refere-se a vari\u00e1vel 'valor' acima<br>globalThis.valor = 200;<\/strong> <br><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Perceba que vari\u00e1veis declaradas com <em>let<\/em> e <em>const<\/em>, n\u00e3o podem ser acessadas com o <em>globalThis<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong><br>let valor = 42;<br>\/\/ error! Property 'valor' does not exist on 'typeof globalThis'.globalThis.valor = 333333;<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 importante observar que o acesso ao escopo global atrav\u00e9s do <em>globalThis<\/em> foi padronizada na \u00faltima vers\u00e3o do <em>ECMAScript<\/em> (ES10). <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Com isso se voc\u00ea estiver utilizando navegadores antigos que n\u00e3o suportam essa funcionalidade, deve-se utilizar ent\u00e3o, um <em><strong><a href=\"https:\/\/github.com\/ljharb\/globalThis\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (abre numa nova aba)\">pollyfill<\/a><\/strong><\/em> apropriado. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Essas foram algumas das melhorias implementadas na nova vers\u00e3o do <em>TypeScript. &nbsp;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E o lan\u00e7amento das pr\u00f3ximas implementa\u00e7\u00f5es, j\u00e1 est\u00e1 previsto para o pr\u00f3ximo m\u00eas de maio. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Caso queira acompanhar os lan\u00e7amentos e novidades acesse a <strong><a href=\"https:\/\/github.com\/Microsoft\/TypeScript\/wiki\/Roadmap\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (abre numa nova aba)\">p\u00e1gina de <\/a><\/strong><em><strong><a href=\"https:\/\/github.com\/Microsoft\/TypeScript\/wiki\/Roadmap\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (abre numa nova aba)\">roadmap<\/a><\/strong><\/em><strong><a href=\"https:\/\/github.com\/Microsoft\/TypeScript\/wiki\/Roadmap\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (abre numa nova aba)\"> do <\/a><\/strong><em><strong><a href=\"https:\/\/github.com\/Microsoft\/TypeScript\/wiki\/Roadmap\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (abre numa nova aba)\">Typescript<\/a><\/strong><\/em><strong><a href=\"https:\/\/github.com\/Microsoft\/TypeScript\/wiki\/Roadmap\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (abre numa nova aba)\"> no <\/a><\/strong><em><strong><a href=\"https:\/\/github.com\/Microsoft\/TypeScript\/wiki\/Roadmap\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (abre numa nova aba)\">GitHub<\/a><\/strong>.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Valeu e at\u00e9 a pr\u00f3xima!<br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/bit.ly\/2JR0g2F\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2019\/07\/CTA-Rodap\u00e9-Front-end-11-1024x134.jpg\" alt=\"\" class=\"wp-image-6570\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><br><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se voc\u00ea n\u00e3o conhece muito o Typescript, pelo menos \u00e9 prov\u00e1vel que j\u00e1 tenha ouvido falar. Com certeza voc\u00ea j\u00e1 se deparou com algum chefe, amigo ou algum conte\u00fado na internet tratando sobre o assunto. Resumidamente Typescript \u00e9 um superset (um superconjunto) de JavaScript desenvolvido pela Microsoft que adiciona tipagem e alguns outros recursos a [&hellip;]<\/p>\n","protected":false},"author":167,"featured_media":5094,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[18],"tags":[],"class_list":["post-5075","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvimiento-de-software"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.1 (Yoast SEO v28.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>TypeScript 3.4: os maiores destaques da nova vers\u00e3o<\/title>\n<meta name=\"description\" content=\"Saiba tudo sobre a vers\u00e3o 3.4 do superset de JavaScript, TypeScript: novidades e mudan\u00e7as. Leia o artigo de Marcus Vinicius!\" \/>\n<meta name=\"robots\" content=\"noindex, follow\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TypeScript 3.4: as novidades\" \/>\n<meta property=\"og:description\" content=\"Se voc\u00ea n\u00e3o conhece muito o Typescript, pelo menos \u00e9 prov\u00e1vel que j\u00e1 tenha ouvido falar. Com certeza voc\u00ea j\u00e1 se deparou com algum chefe, amigo ou algum\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-3-4-as-novidades\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Geekhunter\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/geekhunterbr\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-07T15:20:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-17T13:47:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-as-novidades-geek1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"842\" \/>\n\t<meta property=\"og:image:height\" content=\"595\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Geekhunter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@geekhunterbr\" \/>\n<meta name=\"twitter:site\" content=\"@geekhunterbr\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Geekhunter\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-3-4-as-novidades\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-3-4-as-novidades\\\/\"},\"author\":{\"name\":\"Geekhunter\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/person\\\/9f62b173345139f7bbdaf55312c3d400\"},\"headline\":\"TypeScript 3.4: as novidades\",\"datePublished\":\"2025-03-07T15:20:33+00:00\",\"dateModified\":\"2025-03-17T13:47:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-3-4-as-novidades\\\/\"},\"wordCount\":710,\"publisher\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-3-4-as-novidades\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/typescript-3.4-as-novidades-geek1.png\",\"articleSection\":[\"Desenvolvimiento de software\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-3-4-as-novidades\\\/\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-3-4-as-novidades\\\/\",\"name\":\"TypeScript 3.4: os maiores destaques da nova vers\u00e3o\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-3-4-as-novidades\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-3-4-as-novidades\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/typescript-3.4-as-novidades-geek1.png\",\"datePublished\":\"2025-03-07T15:20:33+00:00\",\"dateModified\":\"2025-03-17T13:47:00+00:00\",\"description\":\"Saiba tudo sobre a vers\u00e3o 3.4 do superset de JavaScript, TypeScript: novidades e mudan\u00e7as. Leia o artigo de Marcus Vinicius!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-3-4-as-novidades\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/typescript-3-4-as-novidades\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-3-4-as-novidades\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/typescript-3.4-as-novidades-geek1.png\",\"contentUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/typescript-3.4-as-novidades-geek1.png\",\"width\":842,\"height\":595},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-3-4-as-novidades\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mundo TI\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/category\\\/mundo-ti\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Desenvolvimiento de software\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/category\\\/mundo-ti\\\/desenvolvimiento-de-software\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"TypeScript 3.4: as novidades\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/\",\"name\":\"Blog de TI\",\"description\":\"Dicas para o RH e profissionais da \u00e1rea TI\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\",\"name\":\"GeekHunter\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/icon-1.png\",\"contentUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/icon-1.png\",\"width\":300,\"height\":300,\"caption\":\"GeekHunter\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/geekhunterbr\\\/\",\"https:\\\/\\\/x.com\\\/geekhunterbr\",\"https:\\\/\\\/www.instagram.com\\\/geekhunterbr\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/geekhunter-brasil\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@GeekHunterOfficial\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/person\\\/9f62b173345139f7bbdaf55312c3d400\",\"name\":\"Geekhunter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"caption\":\"Geekhunter\"},\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/author\\\/matias\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"TypeScript 3.4: os maiores destaques da nova vers\u00e3o","description":"Saiba tudo sobre a vers\u00e3o 3.4 do superset de JavaScript, TypeScript: novidades e mudan\u00e7as. Leia o artigo de Marcus Vinicius!","robots":{"index":"noindex","follow":"follow"},"og_locale":"pt_BR","og_type":"article","og_title":"TypeScript 3.4: as novidades","og_description":"Se voc\u00ea n\u00e3o conhece muito o Typescript, pelo menos \u00e9 prov\u00e1vel que j\u00e1 tenha ouvido falar. Com certeza voc\u00ea j\u00e1 se deparou com algum chefe, amigo ou algum","og_url":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-3-4-as-novidades\/","og_site_name":"Blog Geekhunter","article_publisher":"https:\/\/www.facebook.com\/geekhunterbr\/","article_published_time":"2025-03-07T15:20:33+00:00","article_modified_time":"2025-03-17T13:47:00+00:00","og_image":[{"width":842,"height":595,"url":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-as-novidades-geek1.png","type":"image\/png"}],"author":"Geekhunter","twitter_card":"summary_large_image","twitter_creator":"@geekhunterbr","twitter_site":"@geekhunterbr","twitter_misc":{"Escrito por":"Geekhunter","Est. tempo de leitura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-3-4-as-novidades\/#article","isPartOf":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-3-4-as-novidades\/"},"author":{"name":"Geekhunter","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/person\/9f62b173345139f7bbdaf55312c3d400"},"headline":"TypeScript 3.4: as novidades","datePublished":"2025-03-07T15:20:33+00:00","dateModified":"2025-03-17T13:47:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-3-4-as-novidades\/"},"wordCount":710,"publisher":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-3-4-as-novidades\/#primaryimage"},"thumbnailUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-as-novidades-geek1.png","articleSection":["Desenvolvimiento de software"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-3-4-as-novidades\/","url":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-3-4-as-novidades\/","name":"TypeScript 3.4: os maiores destaques da nova vers\u00e3o","isPartOf":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-3-4-as-novidades\/#primaryimage"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-3-4-as-novidades\/#primaryimage"},"thumbnailUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-as-novidades-geek1.png","datePublished":"2025-03-07T15:20:33+00:00","dateModified":"2025-03-17T13:47:00+00:00","description":"Saiba tudo sobre a vers\u00e3o 3.4 do superset de JavaScript, TypeScript: novidades e mudan\u00e7as. Leia o artigo de Marcus Vinicius!","breadcrumb":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-3-4-as-novidades\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.geekhunter.com/pt/blog\/typescript-3-4-as-novidades\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-3-4-as-novidades\/#primaryimage","url":"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-as-novidades-geek1.png","contentUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/04\/typescript-3.4-as-novidades-geek1.png","width":842,"height":595},{"@type":"BreadcrumbList","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-3-4-as-novidades\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.geekhunter.com/pt/blog\/"},{"@type":"ListItem","position":2,"name":"Mundo TI","item":"https:\/\/www.geekhunter.com/pt/blog\/category\/mundo-ti\/"},{"@type":"ListItem","position":3,"name":"Desenvolvimiento de software","item":"https:\/\/www.geekhunter.com/pt/blog\/category\/mundo-ti\/desenvolvimiento-de-software\/"},{"@type":"ListItem","position":4,"name":"TypeScript 3.4: as novidades"}]},{"@type":"WebSite","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#website","url":"https:\/\/www.geekhunter.com\/pt\/blog\/","name":"Blog de TI","description":"Dicas para o RH e profissionais da \u00e1rea TI","publisher":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.geekhunter.com/pt/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization","name":"GeekHunter","url":"https:\/\/www.geekhunter.com\/pt\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2024\/10\/icon-1.png","contentUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2024\/10\/icon-1.png","width":300,"height":300,"caption":"GeekHunter"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/geekhunterbr\/","https:\/\/x.com\/geekhunterbr","https:\/\/www.instagram.com\/geekhunterbr\/","https:\/\/www.linkedin.com\/company\/geekhunter-brasil\/","https:\/\/www.youtube.com\/@GeekHunterOfficial"]},{"@type":"Person","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/person\/9f62b173345139f7bbdaf55312c3d400","name":"Geekhunter","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","caption":"Geekhunter"},"url":"https:\/\/www.geekhunter.com\/pt\/blog\/author\/matias\/"}]}},"_links":{"self":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts\/5075","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/users\/167"}],"replies":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/comments?post=5075"}],"version-history":[{"count":0,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts\/5075\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/media\/5094"}],"wp:attachment":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/media?parent=5075"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/categories?post=5075"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/tags?post=5075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}