<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: HugoHoffmann</title>
    <description>The latest articles on DEV Community by HugoHoffmann (@hugohoffmann).</description>
    <link>https://dev.to/hugohoffmann</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F94819%2Ff5e62e2c-8173-4a36-962a-a823fcc096a2.jpg</url>
      <title>DEV Community: HugoHoffmann</title>
      <link>https://dev.to/hugohoffmann</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hugohoffmann"/>
    <language>en</language>
    <item>
      <title>Git - 6 comandos que podem lhe ajudar</title>
      <dc:creator>HugoHoffmann</dc:creator>
      <pubDate>Wed, 13 May 2020 21:39:03 +0000</pubDate>
      <link>https://dev.to/hugohoffmann/git-6-comandos-que-podem-lhe-ajudar-1hic</link>
      <guid>https://dev.to/hugohoffmann/git-6-comandos-que-podem-lhe-ajudar-1hic</guid>
      <description>&lt;p&gt;Na área da programação é muito importante usar alguma ferramenta que possa garantir o versionamento de código de uma aplicação. Há muitas vantagens ao fazer o versionamento do seu código, algumas delas são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Segurança no desenvolvimento;&lt;/li&gt;
&lt;li&gt;Eficiência no desenvolvimento em equipes;&lt;/li&gt;
&lt;li&gt;Organização do projeto;&lt;/li&gt;
&lt;li&gt;Controle de atualizações da aplicação;&lt;/li&gt;
&lt;li&gt;Histórico de modificação.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Até o momento, Git é o sistema de versionamento de código mais famoso entre desenvolvedores. No dia a dia da programação você irá se deparar com várias situações relacionadas ao uso do Git, então é muito importante que você saiba alguns comandos que farão total diferença para você.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comandos
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;git clone --recurse-submodules &amp;lt;repo&amp;gt;&lt;/code&gt;: caso você for fazer a clonagem de um repositório que possui submódulos, este comando além de clonar o repositório principal, irá clonar os submódulos;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;git config --global credential.helper store&lt;/code&gt;: permite de forma global armazenar as credenciais de acesso de um repositório. É necessário informar somente na primeira vez as credenciais, após isso elas serão armazenadas pelo Git. Caso queira armazenar de forma local no projeto, ao invés de global, basta trocar o global no comando por local;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;git cherry-pick &amp;lt;id_commit&amp;gt;&lt;/code&gt;: quando realizado um commit em uma branch errada, esse comando permite trazer o commit de acordo com seu id informado para o branch que está no momento do comando;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;git checkout -b&lt;/code&gt;: este comando realiza a criação de uma branch e faz a troca da branch atual para a que foi criada;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;git stash&lt;/code&gt;: permite que seja armazenado o estado atual dos arquivos em alteração na branch atual. Isso permite que seja feita a atualização da branch atual, ou até mesmo a troca de branch para realizar determinada ação. Quando desejar obter novamente os arquivos armazenados basta usar o comando &lt;code&gt;git stash pop&lt;/code&gt;;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;git log --pretty="format:%H | %s | %an | %ar"&lt;/code&gt;: mostra o histórico de commits da branch atual, os parâmetros informados formatam o histórico para apresentar a seguinte sequência: hash do commit | mensagem | autor | tempo do commit.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Referência
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/docs"&gt;https://git-scm.com/docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://devhints.io/git-log-format"&gt;https://devhints.io/git-log-format&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Obrigado pela leitura!&lt;/p&gt;

</description>
      <category>git</category>
      <category>developer</category>
      <category>softwaredevelopment</category>
      <category>code</category>
    </item>
    <item>
      <title>Configurando TypeScript</title>
      <dc:creator>HugoHoffmann</dc:creator>
      <pubDate>Sun, 10 May 2020 19:13:07 +0000</pubDate>
      <link>https://dev.to/hugohoffmann/configurando-typescript-2pml</link>
      <guid>https://dev.to/hugohoffmann/configurando-typescript-2pml</guid>
      <description>&lt;p&gt;Até o momento o &lt;code&gt;JavaScript&lt;/code&gt; é a linguagem de programação utilizada nos navegadores, isso acaba sendo um dos fatores para que sua popularidade e facilidade de uso se torne muito grande. Outro fator importante da linguagem é o facilidade de começar a desenvolver, não há muitas configurações para o ambiente de desenvolvimento. &lt;/p&gt;

&lt;p&gt;Como o &lt;code&gt;JavaScript&lt;/code&gt; é uma linguagem de tipagem dinâmica, acaba herdando os problemas  de que todas as linguagens de programação com tipagem dinâmica possuem, um exemplo disso são os &lt;em&gt;bugs&lt;/em&gt; por tipagem.&lt;/p&gt;

&lt;p&gt;O &lt;code&gt;TypeScript&lt;/code&gt; é um &lt;code&gt;superset&lt;/code&gt;, ou seja, é uma linguagem que estende os recursos atuais do &lt;code&gt;JavaScript&lt;/code&gt;, adicionando a possibilidade de usar tipos estáticos no seu código. Uma das principais vantagens do uso do &lt;code&gt;TypeScript&lt;/code&gt; é a sua capacidade de identificar erros no código antes mesmo da sua execução, isso acaba tornando uma aplicação mais coerente sem &lt;em&gt;bugs&lt;/em&gt; em produção.&lt;/p&gt;

&lt;p&gt;Como os navegadores executam somente código &lt;code&gt;JavaScript&lt;/code&gt;, é necessário fazer um processo de conversão do código &lt;code&gt;TypeScript&lt;/code&gt; para o formato &lt;code&gt;js&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Início
&lt;/h2&gt;

&lt;p&gt;Para dar inicio a um projeto com &lt;code&gt;TypeScript&lt;/code&gt; é necessário ter o &lt;code&gt;nodeJs&lt;/code&gt; e o &lt;code&gt;npm&lt;/code&gt; instalados. Após isso, no terminal execute o comando a seguir:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; typescript
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;O comando executado instala de forma global o &lt;code&gt;TypeScript&lt;/code&gt;. Dessa forma será possível executar comandos do &lt;code&gt;TypeScript&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Em seguida crie um diretório com o nome do projeto que desejar e inicie o projeto com o &lt;code&gt;npm&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;projeto 
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;projeto
&lt;span class="nv"&gt;$ &lt;/span&gt;npm init &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;A flag &lt;code&gt;-y&lt;/code&gt; serve para que não seja necessário preencher as informações sobre o projeto, ela é opcional.&lt;/p&gt;

&lt;h2&gt;
  
  
  Instalando dependências
&lt;/h2&gt;

&lt;p&gt;Para nosso projeto executar código &lt;code&gt;TypeScript&lt;/code&gt; é necessário a instalação das seguintes dependências:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; typescript
&lt;span class="nv"&gt;$ &lt;/span&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; tslint
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;A flag &lt;code&gt;-D&lt;/code&gt; serve para que as dependências sejam instaladas no modo de desenvolvimento, pois elas serão usadas só para desenvolvimento. &lt;/p&gt;

&lt;h2&gt;
  
  
  Configurando TypeScript
&lt;/h2&gt;

&lt;p&gt;O &lt;code&gt;TypeScript&lt;/code&gt; usa como base para suas configurações um arquivo chamado &lt;code&gt;tsconfig.json&lt;/code&gt;, neste arquivo ficam contidas informação para que no momento de compilação do &lt;code&gt;TypeScript&lt;/code&gt; ele saiba quais configurações seguir. Na raiz do projeto, você deve criar o arquivo com as seguintes informações:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"compilerOptions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"commonjs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"esModuleInterop"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"es6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"moduleResolution"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"sourceMap"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"outDir"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dist"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"lib"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"es2015"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Segue abaixo uma breve explicação das configurações acima:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;module&lt;/code&gt;: Determina o método de geração de código do módulo. O node usa o &lt;code&gt;commonjs&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;target&lt;/code&gt;: Determina qual vai ser a versão da especificação de código &lt;code&gt;js&lt;/code&gt; de saída;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;moduleResolution&lt;/code&gt;: Ajuda o compilador a descobrir a que se refere uma importação;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;outDir&lt;/code&gt;: Especifica o local que serão gerados os arquivos &lt;code&gt;js&lt;/code&gt; após a transpilação, o nome comum que é usado é &lt;code&gt;dist&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Caso não deseje criar o arquivo &lt;code&gt;tsconfig.json&lt;/code&gt; manualmente, há a possibilidade de gerar automaticamente com o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;tsc &lt;span class="nt"&gt;--init&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Para saber sobre mais opções do &lt;code&gt;tsconfig&lt;/code&gt; basta acessar a documentação oficial no link abaixo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.typescriptlang.org/docs/handbook/compiler-options.html"&gt;https://www.typescriptlang.org/docs/handbook/compiler-options.html&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Em seguida vamos gerar o &lt;code&gt;tslint&lt;/code&gt;. O &lt;code&gt;tslint&lt;/code&gt; se trata de uma ferramenta para análise de código, ela verifica erros de legibilidade, manutenção e funcionalidade. Execute o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;./node_modules/.bin/tslint &lt;span class="nt"&gt;--init&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Após a execução do comando abra o arquivo &lt;code&gt;tslint.json&lt;/code&gt; recém-gerado e adicione a regra &lt;code&gt;no-console&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"defaultSeverity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"extends"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"tslint:recommended"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"jsRules"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rules"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"no-console"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rulesDirectory"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Por padrão o &lt;code&gt;linter&lt;/code&gt; &lt;code&gt;TypeScript&lt;/code&gt; impede o uso de &lt;code&gt;console&lt;/code&gt; para depuração, a regra adicionada serve para revogar a regra padrão de &lt;code&gt;no-console&lt;/code&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Execução/Transpilação
&lt;/h2&gt;

&lt;p&gt;Voltando nossa atenção para o arquivo &lt;code&gt;package.json&lt;/code&gt;, vamos criar um &lt;code&gt;script&lt;/code&gt; para execução e transpilação do código que a aplicação terá.&lt;/p&gt;

&lt;p&gt;O script será o seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"start"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tsc &amp;amp;&amp;amp; node dist/app.js"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Logo, o arquivo inteiro ficará da seguinte forma:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"projeto"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"main"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dist/app.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"start"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tsc &amp;amp;&amp;amp; node dist/app.js"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"author"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"license"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ISC"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"devDependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@types/express"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^4.16.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"tslint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^5.12.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"typescript"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^3.3.3"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"express"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^4.16.4"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;No &lt;code&gt;json&lt;/code&gt; acima foi especificado o diretório &lt;code&gt;main&lt;/code&gt; da aplicação, em seguida na sessão de &lt;code&gt;scripts&lt;/code&gt;, foi usado o comando &lt;code&gt;tsc&lt;/code&gt; que irá fazer a transpilação do código &lt;code&gt;TypeScript&lt;/code&gt; para &lt;code&gt;JavaScript&lt;/code&gt;, criando o arquivo &lt;code&gt;.js&lt;/code&gt; no diretório de acordo com o que foi configurado no arquivo &lt;code&gt;tsconfig.json&lt;/code&gt; no campo &lt;code&gt;outDir&lt;/code&gt;.&lt;br&gt;
Em seguida, está sendo executado o comando &lt;code&gt;node&lt;/code&gt;, que irá executar o arquivo &lt;code&gt;dist/app.js&lt;/code&gt; com o código já transpilado.&lt;/p&gt;
&lt;h2&gt;
  
  
  Criando e executando um servidor Express básico
&lt;/h2&gt;

&lt;p&gt;Instale as seguintes dependências:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;express
&lt;span class="nv"&gt;$ &lt;/span&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; @types/express
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;O &lt;code&gt;express&lt;/code&gt; é uma biblioteca muito utilizada para roteamento de aplicações web. A segunda dependência serve para que o &lt;code&gt;TypeScript&lt;/code&gt; saiba quais os tipos de classes do &lt;code&gt;express&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Agora crie a seguinte pasta no diretório raiz da aplicação:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;src
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Após a pasta criada, crie o seguinte arquivo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;touch &lt;/span&gt;src/app.ts
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Com o arquivo &lt;code&gt;app.ts&lt;/code&gt; aberto em um editor de sua preferência, digite o seguinte código nele:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;porta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello world!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;porta&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`servidor rodando na porta &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;porta&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;O código cria um servidor &lt;code&gt;node&lt;/code&gt;, que atenderá na porta 3000.&lt;/p&gt;

&lt;p&gt;Basta agora executar o comando abaixo no seu terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;npm start
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Se for executado com sucesso o servidor &lt;code&gt;node&lt;/code&gt;, você deverá se deparar com a seguinte saída no seu terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;servidor rodando na porta 3000
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Acesse a url &lt;code&gt;http://localhost:3000&lt;/code&gt; no seu navegador e deverá aparecer a seguinte mensagem:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;Hello World!
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.typescriptlang.org/docs/home"&gt;https://www.typescriptlang.org/docs/home&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://palantir.github.io/tslint/"&gt;https://palantir.github.io/tslint/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://expressjs.com/pt-br/guide/routing.html"&gt;https://expressjs.com/pt-br/guide/routing.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Obrigado por ler até aqui!&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>developer</category>
      <category>javascript</category>
      <category>express</category>
    </item>
  </channel>
</rss>
