{"id":11670,"date":"2021-05-14T10:44:44","date_gmt":"2021-05-14T13:44:44","guid":{"rendered":"https:\/\/geekblogti.wpengine.com\/?p=11670"},"modified":"2024-09-24T18:27:48","modified_gmt":"2024-09-24T21:27:48","slug":"introducao-a-typescript","status":"publish","type":"post","link":"https:\/\/www.geekhunter.com/pt/blog\/introducao-a-typescript\/","title":{"rendered":"Introdu\u00e7\u00e3o a Typescript: o que \u00e9 e como come\u00e7ar?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Sabendo das limita\u00e7\u00f5es que o Javascript possui, Anders Hejlsberg, que tamb\u00e9m participou da cria\u00e7\u00e3o do C#, do Delphi, do Turbo Pascale da plataforma .NET, resolveu criar o Typescript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O objetivo era elevar o n\u00edvel de c\u00f3digo do JS, que era usado apenas do lado cliente e em c\u00f3digos pequenos. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hoje, o cen\u00e1rio \u00e9 outro, pois a possibilidade de aplicar uma arquitetura mais s\u00f3lida e melhores pr\u00e1ticas de programa\u00e7\u00e3o mudaram essa realidade.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O Javascript suporta o paradigma de Programa\u00e7\u00e3o Orientada a Objetos gra\u00e7as ao Typescript, podendo usar vari\u00e1veis com tipos definidos, criar classes&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hoje voc\u00ea vai entender como funciona o Typescript, suas diferen\u00e7as e vantagens perante o Javascript e porque voc\u00ea deveria us\u00e1-lo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-o-que-typescript\">O que \u00e9 TypeScript<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2021\/05\/o-que-e-typescript-1024x536.jpeg\" alt=\"O que \u00e9 Typescript\" class=\"wp-image-12076\"\/><figcaption>Representa\u00e7\u00e3o do superset Typescript<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Typescript \u00e9 uma linguagem de c\u00f3digo aberto desenvolvida pela Microsoft que foi constru\u00edda em cima do Javascript, que \u00e9 muito difundido atualmente. Ent\u00e3o esse &#8220;superset&#8221; foi criado para adicionar recursos de tipagem est\u00e1ticas \u00e0 linguagem original.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em outras palavras, temos todas as funcionalidades do Javascript no Typescript acrescidas de v\u00e1rias outras funcionalidades que caracterizam o Typescript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Embora Typescript seja um superset do Javascript, na hora de compilar o c\u00f3digo, todo Typescript \u00e9 convertido\/transpilado para Javascript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A pessoa desenvolvedora que estiver escrevendo c\u00f3digos em Typescript lidar\u00e1 com uma sintaxe simplificada, mais clara e suportada por v\u00e1rios TaskRunners ou IDES, mas o seu c\u00f3digo voltar\u00e1 a ser JS ap\u00f3s transpilado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso se d\u00e1 pelo browser n\u00e3o entender a sintaxe de outra linguagem de programa\u00e7\u00e3o que n\u00e3o seja Javascript.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-qual-a-diferen-a-entre-typescript-e-javascript\">Qual a diferen\u00e7a entre TypeScript e JavaScript<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"919\" src=\"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2021\/05\/typescript-1024x919.jpg\" alt=\"Typescript superset de Javascript\" class=\"wp-image-12078\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/typescript-1024x919.jpg 1024w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/typescript-150x135.jpg 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/typescript-100x90.jpg 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/typescript-600x539.jpg 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/typescript-450x404.jpg 450w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/typescript-602x540.jpg 602w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/typescript-300x269.jpg 300w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/typescript-768x689.jpg 768w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/typescript-390x350.jpg 390w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/typescript-820x736.jpg 820w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/typescript-1180x1059.jpg 1180w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/typescript.jpg 1203w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Rela\u00e7\u00e3o entre supeset Typescript e Javascript<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Bom, j\u00e1 que TS nasceu de JS e veio para suprir algumas limita\u00e7\u00f5es, vou apresentar algumas diferen\u00e7as b\u00e1sicas entre os dois:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Caracter\u00edsticas do Typescript<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Caracter\u00edsticas do Javascript<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Tipagem est\u00e1tica<\/td><td class=\"has-text-align-center\" data-align=\"center\">Tipagem din\u00e2mica<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><a href=\"https:\/\/www.geekhunter.com\/pt\/blog\/introducao-ao-javascript-numeros-e-objetos\/\" target=\"_blank\" rel=\"noreferrer noopener\">Orienta\u00e7\u00e3o a objetos<\/a><\/td><td class=\"has-text-align-center\" data-align=\"center\">Programa\u00e7\u00e3o estruturada<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Gen\u00e9ricos<\/td><td class=\"has-text-align-center\" data-align=\"center\">Fun\u00e7\u00f5es<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Namespaces<\/td><td class=\"has-text-align-center\" data-align=\"center\">Prototypes<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Decorators<\/td><td class=\"has-text-align-center\" data-align=\"center\">Fun\u00e7\u00f5es contrutoras<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nesse sentido, dizer que TypeScript \u00e9 outra linguagem de programa\u00e7\u00e3o diferente do JavaScript n\u00e3o \u00e9 verdade, pois tudo que o JavaScript oferece voc\u00ea pode ser usado dentro de um c\u00f3digo TypeScript e, na pr\u00e1tica, a sintaxe JS \u00e9 utilizada tamb\u00e9m.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por\u00e9m, o contr\u00e1rio n\u00e3o \u00e9 verdade, se optar por JavaScript, as funcionalidades inerentes ao TypeScript n\u00e3o poder\u00e3o ser utilizadas, como a tipagem forte, por exemplo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Essa \u00e9 uma das grandes vantagens da utiliza\u00e7\u00e3o do TypeScript:<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Os tipos nos fornecem uma maneira de descrever um objeto n\u00e3o s\u00f3 mais precisamente, gerando uma documenta\u00e7\u00e3o mais concisa, mas tamb\u00e9m uma valida\u00e7\u00e3o do c\u00f3digo em tempo de compila\u00e7\u00e3o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-vantagens-do-typescript\">Vantagens do Typescript<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A principal carater\u00edstica do TypeScript \u00e9 sua tipagem forte, raz\u00e3o pela qual leva no seu nome: <em>type <\/em>quer dizer tipo. Mas tamb\u00e9m h\u00e1 outro aspecto, a <strong>Orienta\u00e7\u00e3o a Objetos<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O JavaScript, na maior parte do seu projeto de linguagem, n\u00e3o \u00e9 tipado e a infer\u00eancia de tipo s\u00f3 vai at\u00e9 certo ponto. Da\u00ed uma necessidade maior de utilizar o TypeScript caso queira suprir essas defici\u00eancias.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-typescript-tipagem-est-tica\">TypeScript: tipagem est\u00e1tica<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No TypeScript, os tipos s\u00e3o inferidos de forma impl\u00edcita, mas tamb\u00e9m podemos explicitar o tipo. Por exemplo, no c\u00f3digo abaixo explicitamos que o tipo da vari\u00e1vel <em>numeroQualquer<\/em> \u00e9 do tipo <em>number<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>let numeroQualquer: number;\nvalor = 10.5;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Devido a tipagem est\u00e1tica, se tentarmos atribuir um valor do tipo string ao atributo numeroQualquer, receberemos um erro.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>let valor: number;\nvalor = \u2018frase qualquer\u2019; \/\/ n\u00e3o \u00e9 v\u00e1lido\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Vale ressaltar que o TypeScript n\u00e3o diferencia valores ponto flutuante (decimal) de valores inteiros. Todos s\u00e3o tratados como sendo do tipo <em>number<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No exemplo acima, a tipagem \u00e9 expl\u00edcita. Mas o TypeScript realiza a infer\u00eancia de tipo. Por exemplo, no c\u00f3digo abaixo, quando atribu\u00edmos a string \u2018Carpe Diem\u2019 \u00e0 vari\u00e1vel <em>fraseLegal<\/em>, implicitamente definimos que essa vari\u00e1vel \u00e9 do tipo string e, portanto, a linha de c\u00f3digo logo em seguida gerar\u00e1 um erro de compila\u00e7\u00e3o.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>let fraseLegal = \u2018Carpe Diem\u2019;\nfraseLegal = 98.5; \/\/ n\u00e3o \u00e9 v\u00e1lido a atribui\u00e7\u00e3o do tipo number para um tipo string.\n<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Tutorial: linting em <a href=\"https:\/\/www.geekhunter.com\/pt\/blog\/eslint-typescript-tutorial\/\">TypeScript com ESLint<\/a><\/p><\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-os-tipos-mais-utilizados-no-typescript-s-o\">Os tipos mais utilizados no TypeScript s\u00e3o:<\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Number<\/strong><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 para todo e qualquer tipo de n\u00famero, seja ele ponto flutuante ou inteiro.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>String<\/strong><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Representa uma string costumeiramente conhecida em outras linguagens de programa\u00e7\u00e3o.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Boolean<\/strong><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Representa um valor booleano: true ou false.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Any<\/strong><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A tradu\u00e7\u00e3o de Any \u00e9 qualquer e, como sua tradu\u00e7\u00e3o sugere, \u00e9 um tipo que pode ser modificado para qualquer outro tipo presente na linguagem, seja string, number, boolean ou qualquer outra coisa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Geralmente esse tipo de informa\u00e7\u00e3o vem de uma API ou diretamente do usu\u00e1rio.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Array<\/strong><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Representa o tipo Array dentro da linguagem. \u00c9 v\u00e1lido informar que podemos criar arrays de duas formas dentro do TypeScript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A primeira:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>let list: number&#91; ] = &#91;2, 3, 5, 7];<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A segunda:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var list: Array&lt;number&gt; = &#91;2, 3, 5, 7, 11]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Uma peculiaridade muito legal, por\u00e9m n\u00e3o recomenda \u00e9 fato de podermos definir um array com tipos diferentes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>let array: &#91;string, number];\nx = &#91;\u201cHello\u201d, 10];  \/\/ Inicializa\u00e7\u00e3o<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esse tamb\u00e9m \u00e9 um tipo, chamado <strong>Tupla<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Existem outros tipos como:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Tuple<\/strong><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Como visto anteriormente, os tipos de tupla permitem expressar um array com um n\u00famero fixo de elementos cujos tipos s\u00e3o conhecidos, mas n\u00e3o precisam ser os mesmos.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Enum<\/strong><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Assim como em outras linguagens, enum \u00e9 um tipo que permite declarar um conjunto valores nomeados e constantes pr\u00e9-definidos.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>enum Cor {\n\n\tVERMELHO,\n\tVERDE,\n\tAZUL,\n}\n\nlet cor: Cor = Cor.Azul;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Unknown<\/strong><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c0s vezes, precisamos de um tipo de vari\u00e1vel que n\u00e3o sabemos quando estamos escrevendo um c\u00f3digo. Esses valores podem vir de conte\u00fado din\u00e2mico. Nesses casos, \u00e9 conveniente fornecer definir ao compilador e at\u00e9 outros programadores que tal vari\u00e1vel pode ser qualquer coisa.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>let valorDesconhecido: unknown;\n\nvalorDesconhecido = true;\nvalorDesconhecido = 100.0;\nvalorDesconhecido = 5;\nvalorDesconhecido = \u201cAl\u00f4 Mundo!\u201d;\nvalorDesconhecido = null;\nvalorDesconhecido = undefined;\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Null and Undefined<\/strong><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nada mais s\u00e3o do que seus pr\u00f3prios nomes dizem.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>let u: undefined = undefined;\nlet n: null = null;\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Void<\/strong><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">O tipo void \u00e9 visto como um tipo de retorno de fun\u00e7\u00f5es que n\u00e3o retornam valor nenhum, geralmente chamadas de procedimentos.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function minhaFuncao(): void {\n\tconsole.log(\u201cMinha Fun\u00e7\u00e3o\u201d);\n\t}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A documenta\u00e7\u00e3o desses tipos, bem como exemplo, voc\u00ea pode encontrar nesse <a href=\"https:\/\/www.typescriptlang.org\/docs\/handbook\/basic-types.html\">link<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/bit.ly\/3qKv5Za\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" width=\"720\" height=\"200\" src=\"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2021\/01\/cta-typescrypt-geral.png\" alt=\"Banner com link para ser uma Pessoa desenvolvera que as empresas procuram\" class=\"wp-image-11677\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/01\/cta-typescrypt-geral.png 720w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/01\/cta-typescrypt-geral-150x42.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/01\/cta-typescrypt-geral-100x28.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/01\/cta-typescrypt-geral-600x167.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/01\/cta-typescrypt-geral-450x125.png 450w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-typescript-e-a-orienta-o-a-objetos\">TypeScript e a orienta\u00e7\u00e3o a objetos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A utiliza\u00e7\u00e3o do paradigma de orienta\u00e7\u00e3o a objetos no JavaScript pode gerar algumas d\u00favidas. Com TypeScript, tudo pode ficar muito f\u00e1cil.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ele oferece a possibilidade de utilizarmos classes, interfaces, encapsulamento, heran\u00e7a, e outras coisinhas a mais. \u00c9 muito incr\u00edvel.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-classes\">Classes<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A declara\u00e7\u00e3o de classes no TypeScript \u00e9 simples, semelhante a outras linguagens de programa\u00e7\u00e3o.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Exemplo { \n\n\t\/\/ atributos\n\t\/\/ construtor\n\t\/\/ getter e setters\n\t\/\/ outros m\u00e9todos\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-heran-a\">Heran\u00e7a<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Assim como no Java, por exemplo, para herdar uma classe utilizamos o comando <em>extends<\/em>. Um detalhe importante \u00e9 que se um m\u00e9todo da classe base for subscrito na classe herdeira, podemos chamar o m\u00e9todo da classe base utilizando o comando <em>super<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class ClasseBase {\n\tnome: string;\n\t\n\tconstructor(nome: string) {\n\t\tthis.nome = nome;\n\t}\n\t\n\tprint(msg: string = \u2018Classe Base\u2019) {\n\t\tconsole.log(msg)\n\t}\n}\n\nclass ClasseHerdeira extends ClasseBase {\n\t\n\tconstructor(nome: string) {\n\t \tsuper(nome)\n\t}\n\t\n\tprint(msg: string = \u2018Classe Herdeira\u2019) {\n\t\tsuper.print(msg);\n\t}\n\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Observe a utiliza\u00e7\u00e3o do comando super na classe <em>ClasseHerdeira <\/em>para chamar o m\u00e9todo print da classe base <em>ClasseBase<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-encapsulamento\">Encapsulamento<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O TypeScript faz uso do conceito de encapsulamento, presente em outras linguagens orientadas a objetos, atrav\u00e9s de getters e setters para acesso aos atributos protegidos de uma classe.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class ClasseExemplo {\n\tprivate _nome: string\n\t\n\tget nome(): string {\n\t\treturn this._nome;\n\t\t}\n\n\tset nome(nome:string): void {\n\t\tthis._nome = nome;\n\t\t}\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-classes-abstratas\">Classes abstratas<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">As classes abstratas servem como base para constru\u00e7\u00e3o de outras classes, dando-lhes a estrutura padr\u00e3o de m\u00e9todos e atributos.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>abstract class ClasseAbstrata {\n\t\n\tconstructor(public nome: string){\n\t\t}\n\n\nprintNome(): void {\n\n\tconsole.log(\u2018Nome\u2019 + this.nome)\n}\n\nabstract otherPrint(): void; \/\/ dever\u00e1 ser implementado nas classes filhas\n\nabstract class ClasseAbstrata {\n\t\n\tconstructor(public nome: string){\n\t\t}\n\n\nprintNome(): void {\n\n\tconsole.log(\u2018Nome\u2019 + this.nome)\n}\n\nabstract otherPrint(): void; \/\/ dever\u00e1 ser implementado nas classes filhas\n\n}\n\nclass ClasseFilhaAbs extends ClasseAbstrata {\n\n\tconstructor() {\n\t\tsuper(\u2018Classe Filha Abs\u2019);\n\t}\n\n\tprintNome(): void {\n\t\tconsole.log(\u2018Classe Filha Abs\u2019);\n\t}\n\n\totherPrint(): void {\n\t\tconsole.log(\u2018Other print method\u2019);\n\t}\n\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-interfaces\">Interfaces<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Assim como as classes abstratas, as interfaces tamb\u00e9m definem a estrutura das classes que \u201cassinam o contrato\u201d com elas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A diferen\u00e7a fundamental \u00e9 que todos os m\u00e9todos e atributos da interface devem ser implementados nas classes filhas. No entanto, voc\u00ea pode definir atributos como opcional tamb\u00e9m.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>interface ClasseInterface {\n\tatributo1: string;\n\tatriburo2?: number\n\t\n\tprint();\n}\n\nclass ClasseFilha implements ClasseInterface {\n\tatributo1: string = \u2018Classe Filha\u2019;\n\tatriburo2?: number = 1;\n\t\n\tprint() {\n\tconsole.log(this.atributo1);\n\t}\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Agora que tratamos dos aspectos principais, como criar um projeto utilizando TypeScript? \u00c9 isso que vamos ver agora! Vamos come\u00e7ar com a instala\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mas antes de continuarmos, se voc\u00ea quiser testar a sintaxe do TypeScript tentando construir c\u00f3digos com a linguagem, existe uma ferramenta online dispon\u00edvel para isso: o <a href=\"https:\/\/www.typescriptlang.org\/play?#code\/JYWwDg9gTgLgBAKjgQwM5wEoFNkGN4BmUEIcA5FDvmQNwCwAUKJLHAN5wCuqWAyjMhhYANFx4BRAgSz44AXzhES5Snhi1GjLAA8W8XBAB2qeAGEInQ0KjjtycABsscALxwAFAEpXAPnaM4OANjeABtA0sYUR4Yc0iAXVcxPgEhdwAGT3oGAOTJaXx3L19-BkDAgBMIXE4QLCsAOhhgGCckgAMATQsgh2BcAGssCrgAEjYIqwVmutR27MC5LM0yuEoYTihDD1zAgB4K4AA3H13yvbAfbs5e-qGRiYspuBmsVD2Aekuz-YAjThgMCMcCMpj6gxcbGKLj8MTiVnck3gAGo4ABGTxyU6rcrlMF3OB1H5wT7-QFGbG4z6HE65ZYMOSMIA\">Playground<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-instala-o-do-typescript\">Instala\u00e7\u00e3o do Typescript<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para instala\u00e7\u00e3o e utiliza\u00e7\u00e3o do TypeScript, voc\u00ea precisar\u00e1 do NodeJs instalado e seu gerenciador de pacotes padr\u00e3o: NPM.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pelo menos para sistemas operacionais Windows, o NPM j\u00e1 vem com Node.js quando o instalamos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Abra o cmd e execute o comando abaixo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm i -g typescript<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">O comando acima instala o TypeScript globalmente na sua m\u00e1quina.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-verificando-instala-o\">Verificando instala\u00e7\u00e3o<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Execute o comando abaixo. Se o TypeScript estiver instalado, a vers\u00e3o aparecer\u00e1 no console.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tsc -v<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-come-ando-a-utiliza-o\">Come\u00e7ando a utiliza\u00e7\u00e3o<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de come\u00e7ar a utiliza\u00e7\u00e3o, vamos precisar de um arquivo de configura\u00e7\u00f5es para o compilador do TypeScript. Dentro de um diret\u00f3rio, abra seu terminal e execute o comando abaixo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tsc --init<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">O comando acima, criar\u00e1 o arquivo tsconfig.json de forma autom\u00e1tica. Depois disso, \u00e9 s\u00f3 criar um arquivo com extens\u00e3o .ts e come\u00e7ar a utilizar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A forma manual de realizar a execu\u00e7\u00e3o pode ser da seguinte forma:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tsc &lt;&lt;nome_do_seu_arquivo&gt;&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esse comando ir\u00e1 criar um arquivo JavaScript com o mesmo nome do arquivo TypeScript. \u00c9 o c\u00f3digo transpilado para a sintaxe do JavaScript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Como tinha dito antes, quando a compila\u00e7\u00e3o for realizada, todo o c\u00f3digo TS se tornar\u00e1 um c\u00f3digo JS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Existe uma maneira mais simples de executar um arquivo TypeScript&nbsp; atrav\u00e9s de plugin instalado no Visual Studio Code: <em>Coder Runner<\/em>. Com esse plugin instalado, teremos que instalar outra depend\u00eancia: <em>ts-node<\/em>. Para isso execute o comando abaixo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm i -g ts-node<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Agora, quando quiser executar um arquivo TypeScript, use o atalho do Windows:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Ctrl + Alt + N<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Alguns frameworks front-end para constru\u00e7\u00e3o de aplica\u00e7\u00f5es Web SPA, como React e Angular, tamb\u00e9m trabalham com TypeScript. Ent\u00e3o vamos falar um pouco sobre isso. Vamos l\u00e1?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-react-typescript\">React TypeScript<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2021\/05\/react-typescript-1024x569.jpg\" alt=\"Integra\u00e7\u00e3o do Typescript com o React\" class=\"wp-image-12077\"\/><figcaption>Integra\u00e7\u00e3o do Typescript com o React<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.geekhunter.com\/pt\/blog\/como-aprender-react\/\" target=\"_blank\" rel=\"noreferrer noopener\">ReactJs<\/a> \u00e9 uma biblioteca JavaScript com cara de framework desenvolvida pelo Facebook para constru\u00e7\u00e3o de interfaces de usu\u00e1rio (IU), bastante popular na comunidade dev.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O template padr\u00e3o que o React usa \u00e9 com o JavaScript, mas pode ser alterado para o TypeScript facilmente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No React com Javascript, os arquivos t\u00eam extens\u00f5es .js ou .jsx. Com o template TypeScript, as extens\u00f5es s\u00e3o .ts ou .tsx.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De qualquer forma, para ambos os templates, a ess\u00eancia da sintaxe do JSX continua a mesma. Basicamente, todas as carater\u00edsticas do TypeScript que j\u00e1 falamos estar\u00e3o dispon\u00edveis para serem utilizadas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para um projeto React com TypeScript, execute o comando abaixo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npx create-react-app &lt;&lt;nome_do_seu_projeto&gt;&gt; --template Typescript<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esse comando acima cria um projeto pronto para ser utilizado com TypeScript. Se voc\u00ea j\u00e1 tiver um projeto criado, pode adicionar o TypeScript ao projeto atrav\u00e9s do comando abaixo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install --save-dev typescript<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nesse \u00faltimo caso, precisamos modificar a se\u00e7\u00e3o scripts no arquivo package.json. Uma vez que temos o acesso ao comando tsc, fazemos da seguinte forma:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\t\n       \u201cscripts\u201d: {\n  \u201cbuild\u201d: \u201ctsc\u201d,\n\t },\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">E ent\u00e3o, para executar o projeto, rode o comando seguinte:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm run buildx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Existem outras quest\u00f5es pertinentes e importantes em rela\u00e7\u00e3o ao React com TypeScript, mas n\u00e3o \u00e9 do escopo deste artigo falar sobre isso, mas fica a ci\u00eancia que existem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-angular-typescript\">Angular TypeScript<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"622\" height=\"370\" src=\"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2021\/05\/angular-typescript.png\" alt=\"Angular e Typescript\" class=\"wp-image-12075\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/angular-typescript.png 622w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/angular-typescript-150x89.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/angular-typescript-100x59.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/angular-typescript-600x357.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/05\/angular-typescript-450x268.png 450w\" sizes=\"(max-width: 622px) 100vw, 622px\" \/><figcaption>Representa\u00e7\u00e3o da rela\u00e7\u00e3o entre Angular e Typescript<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.geekhunter.com\/pt\/blog\/um-overview-sobre-o-framework-angular\/\" target=\"_blank\" rel=\"noreferrer noopener\">Angular<\/a> \u00e9 um framework moderno criado pelo Google constru\u00eddo inteiramente com TypeScript para aplica\u00e7\u00f5es Web SPA baseada em componentes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A documenta\u00e7\u00e3o do Angular n\u00e3o apenas oferece suporte ao TypeScript como, sendo a sua linguagem primeira, oferece uma refer\u00eancia mais atualizada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Na utiliza\u00e7\u00e3o do Angular, assim como outros frameworks, \u00e9 comum a utiliza\u00e7\u00e3o do seu CLI (Command Line Interface). \u00c9 por ele que iremos criar um projeto Angular.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-instala-o\">Instala\u00e7\u00e3o<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para instalar o command line interface do Angular, execute o comando abaixo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm i -g @angular\/cli<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para criar um projeto Angular, execute o comando abaixo definindo o nome do seu projeto.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ng new &lt;&lt;nome_do_seu_projeto&gt;&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Como o Angular \u00e9 constru\u00eddo com TypeScript, n\u00e3o \u00e9 preciso de uma configura\u00e7\u00e3o pr\u00e9via e, portanto, j\u00e1 podemos sair programando com o superset no projeto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclus-o\">Conclus\u00e3o<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Essa foi uma introdu\u00e7\u00e3o ao Typescript, voc\u00ea pode conhecer algumas funcionalidades, os motivos de utiliz\u00e1-lo em determinados momentos e algumas instala\u00e7\u00f5es com Angular e React.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em resumo, o Typescript \u00e9 uma linguagem que possui uma forte tipagem, fornecendo maior performance e produtividade na hora de se rodar uma aplica\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Outro ponto \u00e9 a utiliza\u00e7\u00e3o da orienta\u00e7\u00e3o \u00e0 objetos em Javascript, que pode gerar d\u00favidas e confus\u00e3o. Com o Typescript isso n\u00e3o ocorre, visto suas propriedades que s\u00e3o mais direcionadas e facilitadas para a programa\u00e7\u00e3o orientada \u00e0 objetos!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Espero que tenham gostado e bons estudos! \ud83d\ude00<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/bit.ly\/3qJmXbs\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"720\" height=\"200\" src=\"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2021\/01\/cta-typescrypt.png\" alt=\"Banner com link para vagas de Desenvolvedor\" class=\"wp-image-11678\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/01\/cta-typescrypt.png 720w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/01\/cta-typescrypt-150x42.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/01\/cta-typescrypt-100x28.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/01\/cta-typescrypt-600x167.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/01\/cta-typescrypt-450x125.png 450w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Sabendo das limita\u00e7\u00f5es que o Javascript possui, Anders Hejlsberg, que tamb\u00e9m participou da cria\u00e7\u00e3o do C#, do Delphi, do Turbo Pascale da plataforma .NET, resolveu criar o Typescript. O objetivo era elevar o n\u00edvel de c\u00f3digo do JS, que era usado apenas do lado cliente e em c\u00f3digos pequenos. Hoje, o cen\u00e1rio \u00e9 outro, pois [&hellip;]<\/p>\n","protected":false},"author":167,"featured_media":11676,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[18],"tags":[],"class_list":["post-11670","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.6 (Yoast SEO v28.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Typescript: uma introdu\u00e7\u00e3o para voc\u00ea j\u00e1 sair programando<\/title>\n<meta name=\"description\" content=\"Quer aprender Typescript ou iniciar um projeto nessa linguagem? Encontre aqui as informa\u00e7\u00f5es que voc\u00ea precisa para dar o primeiro passo!\" \/>\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.geekhunter.com\/pt\/blog\/introducao-a-typescript\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introdu\u00e7\u00e3o a Typescript: o que \u00e9 e como come\u00e7ar?\" \/>\n<meta property=\"og:description\" content=\"Sabendo das limita\u00e7\u00f5es que o Javascript possui, Anders Hejlsberg, que tamb\u00e9m participou da cria\u00e7\u00e3o do C#, do Delphi, do Turbo Pascale da plataforma .NET,\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.geekhunter.com\/pt\/blog\/introducao-a-typescript\/\" \/>\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=\"2021-05-14T13:44:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-24T21:27:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/01\/typescript.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1280\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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=\"11 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\\\/introducao-a-typescript\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/introducao-a-typescript\\\/\"},\"author\":{\"name\":\"Geekhunter\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/person\\\/9f62b173345139f7bbdaf55312c3d400\"},\"headline\":\"Introdu\u00e7\u00e3o a Typescript: o que \u00e9 e como come\u00e7ar?\",\"datePublished\":\"2021-05-14T13:44:44+00:00\",\"dateModified\":\"2024-09-24T21:27:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/introducao-a-typescript\\\/\"},\"wordCount\":2013,\"publisher\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/introducao-a-typescript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/typescript.jpg\",\"articleSection\":[\"Desenvolvimiento de software\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/introducao-a-typescript\\\/\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/introducao-a-typescript\\\/\",\"name\":\"Typescript: uma introdu\u00e7\u00e3o para voc\u00ea j\u00e1 sair programando\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/introducao-a-typescript\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/introducao-a-typescript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/typescript.jpg\",\"datePublished\":\"2021-05-14T13:44:44+00:00\",\"dateModified\":\"2024-09-24T21:27:48+00:00\",\"description\":\"Quer aprender Typescript ou iniciar um projeto nessa linguagem? Encontre aqui as informa\u00e7\u00f5es que voc\u00ea precisa para dar o primeiro passo!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/introducao-a-typescript\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/introducao-a-typescript\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/introducao-a-typescript\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/typescript.jpg\",\"contentUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/typescript.jpg\",\"width\":1920,\"height\":1280,\"caption\":\"Tela de um computador exibindo c\u00f3digos em typescript.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/introducao-a-typescript\\\/#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\":\"Introdu\u00e7\u00e3o a Typescript: o que \u00e9 e como come\u00e7ar?\"}]},{\"@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: uma introdu\u00e7\u00e3o para voc\u00ea j\u00e1 sair programando","description":"Quer aprender Typescript ou iniciar um projeto nessa linguagem? Encontre aqui as informa\u00e7\u00f5es que voc\u00ea precisa para dar o primeiro passo!","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.geekhunter.com\/pt\/blog\/introducao-a-typescript\/","og_locale":"pt_BR","og_type":"article","og_title":"Introdu\u00e7\u00e3o a Typescript: o que \u00e9 e como come\u00e7ar?","og_description":"Sabendo das limita\u00e7\u00f5es que o Javascript possui, Anders Hejlsberg, que tamb\u00e9m participou da cria\u00e7\u00e3o do C#, do Delphi, do Turbo Pascale da plataforma .NET,","og_url":"https:\/\/www.geekhunter.com\/pt\/blog\/introducao-a-typescript\/","og_site_name":"Blog Geekhunter","article_publisher":"https:\/\/www.facebook.com\/geekhunterbr\/","article_published_time":"2021-05-14T13:44:44+00:00","article_modified_time":"2024-09-24T21:27:48+00:00","og_image":[{"width":1920,"height":1280,"url":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/01\/typescript.jpg","type":"image\/jpeg"}],"author":"Geekhunter","twitter_card":"summary_large_image","twitter_creator":"@geekhunterbr","twitter_site":"@geekhunterbr","twitter_misc":{"Escrito por":"Geekhunter","Est. tempo de leitura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/introducao-a-typescript\/#article","isPartOf":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/introducao-a-typescript\/"},"author":{"name":"Geekhunter","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/person\/9f62b173345139f7bbdaf55312c3d400"},"headline":"Introdu\u00e7\u00e3o a Typescript: o que \u00e9 e como come\u00e7ar?","datePublished":"2021-05-14T13:44:44+00:00","dateModified":"2024-09-24T21:27:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/introducao-a-typescript\/"},"wordCount":2013,"publisher":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/introducao-a-typescript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/01\/typescript.jpg","articleSection":["Desenvolvimiento de software"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/introducao-a-typescript\/","url":"https:\/\/www.geekhunter.com\/pt\/blog\/introducao-a-typescript\/","name":"Typescript: uma introdu\u00e7\u00e3o para voc\u00ea j\u00e1 sair programando","isPartOf":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/introducao-a-typescript\/#primaryimage"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/introducao-a-typescript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/01\/typescript.jpg","datePublished":"2021-05-14T13:44:44+00:00","dateModified":"2024-09-24T21:27:48+00:00","description":"Quer aprender Typescript ou iniciar um projeto nessa linguagem? Encontre aqui as informa\u00e7\u00f5es que voc\u00ea precisa para dar o primeiro passo!","breadcrumb":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/introducao-a-typescript\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.geekhunter.com/pt/blog\/introducao-a-typescript\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/introducao-a-typescript\/#primaryimage","url":"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2021\/01\/typescript.jpg","contentUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/01\/typescript.jpg","width":1920,"height":1280,"caption":"Tela de um computador exibindo c\u00f3digos em typescript."},{"@type":"BreadcrumbList","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/introducao-a-typescript\/#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":"Introdu\u00e7\u00e3o a Typescript: o que \u00e9 e como come\u00e7ar?"}]},{"@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\/11670","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"}],"replies":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/comments?post=11670"}],"version-history":[{"count":0,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts\/11670\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/media\/11676"}],"wp:attachment":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/media?parent=11670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/categories?post=11670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/tags?post=11670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}