<?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>Forem: Leandro Lopes</title>
    <description>The latest articles on Forem by Leandro Lopes (@d3vlopes).</description>
    <link>https://forem.com/d3vlopes</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%2F1141070%2Fd1e4222b-d387-4772-b168-0de5db92bd6f.jpeg</url>
      <title>Forem: Leandro Lopes</title>
      <link>https://forem.com/d3vlopes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/d3vlopes"/>
    <language>en</language>
    <item>
      <title>Curso gratuito de Typescript 2025 - Aula 002</title>
      <dc:creator>Leandro Lopes</dc:creator>
      <pubDate>Sun, 05 Jan 2025 20:17:40 +0000</pubDate>
      <link>https://forem.com/portugues/curso-gratuito-de-typescript-2025-aula-002-2df6</link>
      <guid>https://forem.com/portugues/curso-gratuito-de-typescript-2025-aula-002-2df6</guid>
      <description>&lt;p&gt;Na aula anterior, configuramos nosso ambiente de desenvolvimento e mergulhamos nos &lt;code&gt;Tipos Primitivos&lt;/code&gt; do Typescript.&lt;/p&gt;

&lt;p&gt;Na aula de hoje, vamos aprender a trabalhar com &lt;code&gt;Objetos&lt;/code&gt; e &lt;code&gt;Arrays&lt;/code&gt; em Typescript.&lt;/p&gt;




&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;Nessa aula, vamos aprender sobre &lt;code&gt;Objetos&lt;/code&gt; e &lt;code&gt;Arrays&lt;/code&gt; em Typescript. Vamos explorar diferentes formas de como podemos criar objetos e arrays em nossos projetos com Typescript.&lt;/p&gt;

&lt;h2&gt;
  
  
  Objetos Literais
&lt;/h2&gt;

&lt;p&gt;Uma das formas mais simples de criar um &lt;code&gt;objeto&lt;/code&gt; é através de &lt;code&gt;objetos literais&lt;/code&gt;. Essa abordagem é particularmente útil quando você já tem conhecimento prévio das propriedades do objeto, uma vez que não é possível adicionar novas propriedades posteriormente.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;objeto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;chaveA&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;value&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;chaveB&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;value&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;objeto&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chaveC&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;value&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frot0jhws6rzg6kym9qt5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frot0jhws6rzg6kym9qt5.png" alt="Imagem de um código de exemplo de um objeto literal" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Index Signature
&lt;/h2&gt;

&lt;p&gt;Uma forma de criar objetos dinâmicos é utilizando &lt;code&gt;Index Signature&lt;/code&gt;. Essa abordagem é especialmente útil quando não sabemos antecipadamente quais serão as propriedades do objeto.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;objeto&lt;/span&gt;&lt;span class="p"&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;key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;chaveA&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;value A&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;chaveB&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;value B&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;objeto&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chaveC&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;value C&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;objeto&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb9i19y5apu4zmreey7sj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb9i19y5apu4zmreey7sj.png" alt="Imagem de um código de exemplo de um Index Signature" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Record
&lt;/h2&gt;

&lt;p&gt;Outra forma que temos de criar objetos dinâmicos em Typescript é utilizando &lt;code&gt;Record&lt;/code&gt;. O &lt;code&gt;Record&lt;/code&gt; é um dos &lt;code&gt;Utility Type&lt;/code&gt; da caixa de ferramentas do Typescript. Vamos explorar mais sobre os Utility Types mais adiante. Por enquanto, o que você precisa saber é que ao utilizar &lt;code&gt;Record&lt;/code&gt;, precisamos especificar o tipo para a &lt;code&gt;chave (key)&lt;/code&gt; e para o &lt;code&gt;valor (value)&lt;/code&gt; do objeto entre &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;objeto&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Record&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;chaveA&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;value A&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;chaveB&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;value B&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8nhqwxe046umycn3j1xl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8nhqwxe046umycn3j1xl.png" alt="Imagem de um código de exemplo criando um objeto com Record" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Array Literais
&lt;/h2&gt;

&lt;p&gt;A forma mais simples de criar um array é usando um &lt;code&gt;array literal&lt;/code&gt;, que é uma lista de elementos separados por vírgulas dentro de colchetes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arrayDeNumeros&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&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;arrayDeString&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Josh&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Patrick&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lamar&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;arrayDeStringENumeros&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Alice&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;55&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arrayDeString&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arrayDeNumeros&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arrayDeStringENumeros&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1pl4as15owboi4q3lpwe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1pl4as15owboi4q3lpwe.png" alt="Imagem de um código de exemplo de um array literal" width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Array Constructor
&lt;/h2&gt;

&lt;p&gt;Você também pode usar o &lt;code&gt;construtor Array&lt;/code&gt; para criar um novo array.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arrayDeNumeros&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&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;arrayDeString&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Josh&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Patrick&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lamar&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;arrayDeStringENumeros&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Alice&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;55&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arrayDeString&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arrayDeNumeros&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arrayDeStringENumeros&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfa8fs8nzgzx3d7lnsz8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfa8fs8nzgzx3d7lnsz8.png" alt="Imagem de um código de exemplo de um array utilizando constructor" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Você pode acessar o código da aula, acessando o link abaixo: &lt;br&gt;
&lt;a href="https://github.com/d3vlopes/curso-typescript/tree/aula-002" rel="noopener noreferrer"&gt;https://github.com/d3vlopes/curso-typescript/tree/aula-002&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Próxima aula
&lt;/h2&gt;

&lt;p&gt;Na próxima aula, vamos explorar as &lt;code&gt;funções&lt;/code&gt; em Typescript. Vamos aprender como definir o tipo dos parâmetros, tipo de retorno e muito mais!&lt;/p&gt;

&lt;p&gt;Deixe um comentário e compartilhe essa publicação com sua rede para dar uma força e ajudar mais pessoas a aprender Typescript.&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>braziliandevs</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Curso gratuito de Typescript 2025</title>
      <dc:creator>Leandro Lopes</dc:creator>
      <pubDate>Sun, 05 Jan 2025 19:52:08 +0000</pubDate>
      <link>https://forem.com/portugues/curso-gratuito-de-typescript-2025-5b3c</link>
      <guid>https://forem.com/portugues/curso-gratuito-de-typescript-2025-5b3c</guid>
      <description>&lt;p&gt;Para ajudar você a conquistar seus objetivos em 2025 como Desenvolvedor de Software, estou disponibilizando um curso completo de Typescript totalmente GRATUITO!&lt;/p&gt;

&lt;p&gt;📚 O que você vai aprender?&lt;br&gt;
🔷 Aula 001 - Tipos Primitivos&lt;br&gt;
🔷 Aula 002 - Objetos e Arrays&lt;br&gt;
🔷 Aula 003 - Funções&lt;br&gt;
🔷 Aula 004 - Outros tipos&lt;br&gt;
🔷 Aula 005 - Union Types, Type Assertion e Literal Types&lt;br&gt;
🔷 Aula 006 - Inferência de tipo&lt;br&gt;
🔷 Aula 007 - Interface e Types&lt;br&gt;
🔷 Aula 008 - Generics&lt;br&gt;
🔷 Aula 009 - Utility Types&lt;br&gt;
🔷 Aula 010 - Classes (Parte 1)&lt;br&gt;
🔷 Aula 011 - Classes (Parte 2)&lt;br&gt;
🔷 Aula 012 - Dicas Extras&lt;br&gt;
🔷 Aula 013 - Desafio prático&lt;/p&gt;

&lt;p&gt;Você vai aprender tudo que você mais vai utilizar ao trabalhar com Typescript no seu dia a dia de forma prática.&lt;/p&gt;

&lt;p&gt;Se você já conhece Javascript, o Typescript será um divisor de águas na sua carreira, trazendo mais segurança e escalabilidade ao seu código.&lt;/p&gt;
&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;p&gt;Antes de iniciar a aula, precisamos primeiro configurar o setup do nosso ambiente de desenvolvimento, instalando e configurando algumas ferramentas que vamos utilizar.&lt;/p&gt;
&lt;h3&gt;
  
  
  Instalação do Node
&lt;/h3&gt;

&lt;p&gt;Se você não tiver o Node instalado em sua máquina, você pode acessar &lt;a href="https://nodejs.org/en/download" rel="noopener noreferrer"&gt;https://nodejs.org/en/download&lt;/a&gt; e fazer a instalação conforme o seu sistema operacional.&lt;/p&gt;
&lt;h3&gt;
  
  
  Instalação do VS Code
&lt;/h3&gt;

&lt;p&gt;Irei utilizar o VS Code como editor, você pode baixar ele acessando &lt;a href="https://code.visualstudio.com" rel="noopener noreferrer"&gt;https://code.visualstudio.com&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Instalação do Typescript
&lt;/h3&gt;

&lt;p&gt;Com o Node instalado, podemos inciar o projeto e configurar o Typescript.&lt;/p&gt;

&lt;p&gt;Crie uma pasta e abra o terminal nessa pasta recém criada e rode o seguinte comando pressionando &lt;code&gt;ENTER&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm init &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; code &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsffv2l8mcwhynve3zh5u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsffv2l8mcwhynve3zh5u.png" alt="Imagem do terminal" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O comando irá criar um arquivo &lt;code&gt;package.json&lt;/code&gt; e abrir o VS Code na pasta. No VS Code click em &lt;code&gt;View &amp;gt; Terminal&lt;/code&gt; para abir o terminal integrado.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkjhs67tqwv53cu3nvu4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkjhs67tqwv53cu3nvu4m.png" alt="Imagem do VS Code" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora, no terminal integrado do VS Code, rode o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-D&lt;/span&gt; typescript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flp3xgqy3ayw6ptl7x7n3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flp3xgqy3ayw6ptl7x7n3.png" alt="Imagem do terminal com o comando npm i -D typescript" width="800" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esse comando vai instalar o &lt;code&gt;Typescript&lt;/code&gt; como uma dependência de desenvolvimento no nosso &lt;code&gt;package.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Crie um arquivo chamado &lt;code&gt;tsconfig.json&lt;/code&gt; e adicione a seguinte configuração ao arquivo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-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;"rootDir"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"./src"&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="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;"ES2020"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"strict"&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;"noEmitOnError"&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="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;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpcwfd8d4xy6e6bgai6lf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpcwfd8d4xy6e6bgai6lf.png" alt="Imagem do arquivo tsconfig.json" width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O arquivo &lt;code&gt;tsconfig.json&lt;/code&gt; serve para configurar o compilador do Typescript, existe diversas configurações que podemos fazer, nesse momento estamos interessado apenas nas seguintes configurações:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;rootDir&lt;/code&gt; - Define o caminho para os arquivos Typescript.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;outDir&lt;/code&gt; -  Define a pasta de saida para os arquivos Javascript.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;target&lt;/code&gt; -  Define a versão do Javascript que o compilador deve utilizar para compilar os arquivos.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;strict&lt;/code&gt; -  Habilita o strict mode.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;noEmitOnError&lt;/code&gt; - Não executa a compilação, caso tenha algum erro de tipo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Você pode conhecer todas as opções disponíveis, acessando &lt;a href="https://www.typescriptlang.org/docs/handbook/compiler-options.html" rel="noopener noreferrer"&gt;https://www.typescriptlang.org/docs/handbook/compiler-options.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Acesse o arquivo &lt;code&gt;package.json&lt;/code&gt; e crie um novo script para build com o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx tsc &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; node ./dist/index.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fouim9fmwy4m3qbntsms0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fouim9fmwy4m3qbntsms0.png" alt="Imagem do package.json" width="800" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O navegador assim como o Node não entende Typescript, precisamos compilar o código Typescript para Javascript para que ele possa entender e executar. Esse comando vai compilar nosso código Typescript para Javascript para que a gente possa executar ele no Node.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lembre-se, no fim todo o nosso código Typescript vai virar Javascript. Typescript é apenas uma ferramenta utilizada no desenvolvimento para melhorar a segurança de tipo e escalabilidade do nosso código.&lt;/p&gt;

&lt;p&gt;Para finalizar, crie uma pasta chamada &lt;code&gt;src&lt;/code&gt; e um arquivo &lt;code&gt;index.ts&lt;/code&gt; com o seguinte código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1rnvh9xof2g2qp6frbc5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1rnvh9xof2g2qp6frbc5.png" alt="Imagem do arquivo index.ts" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora, vamos testar se está tudo funcionado. Abra o terminal e rode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8rravh12mlupssusg2lb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8rravh12mlupssusg2lb.png" alt="Imagem do terminal executando o comando npm run build" width="800" height="210"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ao rodar, se tudo estiver certo, você deve ver no terminal &lt;code&gt;Hello World&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvqxl4uzubr76pucktga9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvqxl4uzubr76pucktga9.png" alt="Imagem do terminal mostrando a saída do comando npm run build" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sempre que quiser ver algo no console, vai ser preciso rodar esse comando para compilar o arquivo para Javascript, beleza?&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Tipos primitivos
&lt;/h2&gt;

&lt;p&gt;Em TypeScript, existem seis tipos primitivos que são: &lt;code&gt;string&lt;/code&gt;, &lt;code&gt;number&lt;/code&gt;, &lt;code&gt;boolean&lt;/code&gt;, &lt;code&gt;symbol&lt;/code&gt;, &lt;code&gt;bigint&lt;/code&gt;, &lt;code&gt;null&lt;/code&gt; e &lt;code&gt;undefined&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nome&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Leandro&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Qualquer tipo de string: '' "" ``&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// 10, 1.57, -5.55&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;adulto&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// true ou false&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;simbolo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;symbol&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Symbol&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;symbol-id&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;big&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;bigint&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="nx"&gt;n&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;nulo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&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;indefinido&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  String
&lt;/h3&gt;

&lt;p&gt;Uma string é qualquer coisa entre aspas. Pode ser &lt;code&gt;aspas simples ('’)&lt;/code&gt;, &lt;code&gt;duplas ("”)&lt;/code&gt; ou &lt;code&gt;crase (&lt;/code&gt;&lt;code&gt;)&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Number
&lt;/h3&gt;

&lt;p&gt;Aqui não tem distinção: inteiros, decimais, positivos, negativos, tudo é tratado como &lt;code&gt;number&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Boolean
&lt;/h3&gt;

&lt;p&gt;O clássico &lt;code&gt;verdadeiro ou falso&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Symbol
&lt;/h3&gt;

&lt;p&gt;Um pouco abstrato, mas &lt;code&gt;symbol&lt;/code&gt; é um identificador único. Pense nele como uma impressão digital para objetos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bigint
&lt;/h3&gt;

&lt;p&gt;Se um number já é grande, o &lt;code&gt;bigint&lt;/code&gt; é quase infinito. Use para lidar com números que nem calculadora científica resolve.&lt;/p&gt;

&lt;h3&gt;
  
  
  Null
&lt;/h3&gt;

&lt;p&gt;Representa uma variável que não possui valor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Undefined
&lt;/h3&gt;

&lt;p&gt;Representa um valor não inicializado.&lt;/p&gt;




&lt;p&gt;Você pode acessar o código da aula, acessando o link abaixo: &lt;br&gt;
&lt;a href="https://github.com/d3vlopes/curso-typescript/tree/aula-001" rel="noopener noreferrer"&gt;https://github.com/d3vlopes/curso-typescript/tree/aula-001&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Próxima aula
&lt;/h2&gt;

&lt;p&gt;Na próxima aula, vamos aprender sobre &lt;code&gt;Objetos&lt;/code&gt; e &lt;code&gt;Arrays&lt;/code&gt; em Typescript.&lt;/p&gt;

&lt;p&gt;💡 Dúvidas ou problemas?&lt;br&gt;
Teve algum problema com a configuração do setup? Ficou com alguma dúvida sobre a aula? Coloca aqui nos comentários, vamos juntos construir um material de qualidade e acessível a todos.&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>braziliandevs</category>
      <category>javascript</category>
    </item>
    <item>
      <title>UI Patterns</title>
      <dc:creator>Leandro Lopes</dc:creator>
      <pubDate>Thu, 04 Apr 2024 18:06:18 +0000</pubDate>
      <link>https://forem.com/d3vlopes/ui-patterns-3683</link>
      <guid>https://forem.com/d3vlopes/ui-patterns-3683</guid>
      <description>&lt;p&gt;Você já se perguntou como as melhores interfaces são projetadas?&lt;/p&gt;

&lt;p&gt;Bem-vindo ao universo dos UI Patterns, onde a magia da usabilidade e da experiência do usuário acontece!&lt;/p&gt;

&lt;p&gt;UI patterns são componentes reutilizáveis/recorrentes que os designers usam para resolver problemas comuns de design de interface. Eles economizam tempo e esforço, promovendo usabilidade, consistência e acessibilidade.&lt;/p&gt;

&lt;p&gt;Assim como os desenvolvedores, os designers usam patterns como soluções testadas e comprovadas para criar interfaces eficazes e fáceis de usar. Em vez de reinventar a roda a cada novo design, eles podem recorrer a uma coleção de padrões estabelecidos que provaram funcionar em situações semelhantes.&lt;/p&gt;

&lt;p&gt;Alguns UI Patterns frequentemente utilizados para a criação de interfaces, são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Breadcrumb: UI Pattern utilizado para indicar a localização do usuário na hierarquia de uma página web.&lt;/li&gt;
&lt;li&gt;Card:  UI Pattern utilizado para apresentar informações de forma resumida. &lt;/li&gt;
&lt;li&gt;Modal: UI Pattern utilizado para chamar a atenção do usuário, interrompendo seu fluxo até que uma ação seja realizada.&lt;/li&gt;
&lt;li&gt;Accordion: UI Pattern utilizado para organizar informações em uma interface de maneira compacta e permitir que o usuário expanda conforme seu interesse.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quer aprender mais sobre UI Patterns? Conheça meu eBook &lt;a href="https://www.designparadevs.com.br"&gt;Design para Devs&lt;/a&gt; onde temos um capítulo inteiro sobre esse assunto que todo desenvolvedor profissional frontend deve saber.&lt;/p&gt;

</description>
      <category>ui</category>
      <category>uidesign</category>
      <category>frontend</category>
      <category>design</category>
    </item>
    <item>
      <title>📚💡Melhores livros de programação - Parte 1</title>
      <dc:creator>Leandro Lopes</dc:creator>
      <pubDate>Wed, 22 Nov 2023 18:25:02 +0000</pubDate>
      <link>https://forem.com/d3vlopes/melhores-livros-de-programacao-parte-1-1b00</link>
      <guid>https://forem.com/d3vlopes/melhores-livros-de-programacao-parte-1-1b00</guid>
      <description>&lt;p&gt;A leitura é uma ponte essencial para o crescimento e a inovação na nossa área, e por isso, escolhi cuidadosamente livros que considero verdadeiros tesouros para qualquer desenvolvedor.&lt;/p&gt;

&lt;p&gt;Ao adquirir esses livros através do link desta publicação, você não apenas investe em seu próprio desenvolvimento, mas também contribui para o crescimento do &lt;a href="https://www.uniondevelopers.com.br"&gt;Union Developers&lt;/a&gt;. Cada compra realizada por meio deste link gera uma comissão que impulsiona nossos esforços em trazer ainda mais valor e conhecimento para todos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Padrões de Projetos: Soluções Reutilizáveis de Software Orientados a Objetos
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com.br/Padr%C3%B5es-Projetos-Solu%C3%A7%C3%B5es-Reutiliz%C3%A1veis-Orientados/dp/8573076100?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;amp;crid=1XFPLTHRYXDJS&amp;amp;keywords=Padr%C3%B5es+de+Projetos%3A+Solu%C3%A7%C3%B5es+Reutiliz%C3%A1veis+de+Software+Orientados+a+Objetos&amp;amp;qid=1700676718&amp;amp;sprefix=padr%C3%B5es+de+projetos+solu%C3%A7%C3%B5es+reutiliz%C3%A1veis+de+software+orientados+a+objetos%2Caps%2C455&amp;amp;sr=8-1&amp;amp;ufe=app_do%3Aamzn1.fos.6d798eae-cadf-45de-946a-f477d47705b9&amp;amp;linkCode=li3&amp;amp;tag=d3vlopes-20&amp;amp;linkId=35c3adf69307244207861c1d32210617&amp;amp;language=pt_BR&amp;amp;ref_=as_li_ss_il"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;ASIN=8573076100&amp;amp;Format=_SL250_&amp;amp;ID=AsinImage&amp;amp;MarketPlace=BR&amp;amp;ServiceVersion=20070822&amp;amp;WS=1&amp;amp;tag=d3vlopes-20&amp;amp;language=pt_BR"&gt;&lt;/a&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oJ2A4xKF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ir-br.amazon-adsystem.com/e/ir%3Ft%3Dd3vlopes-20%26language%3Dpt_BR%26l%3Dli3%26o%3D33%26a%3D8573076100" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oJ2A4xKF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ir-br.amazon-adsystem.com/e/ir%3Ft%3Dd3vlopes-20%26language%3Dpt_BR%26l%3Dli3%26o%3D33%26a%3D8573076100" alt="" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esse livro é um clássico e indispensável para qualquer desenvolvedor sobre a arte do design de software. Escrito por Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, também conhecidos como "Gang of Four", o livro oferece um guia abrangente e atemporal sobre os padrões de design mais essenciais.&lt;/p&gt;

&lt;p&gt;Explorando desde os fundamentos até os padrões avançados, esta obra apresenta soluções comprovadas para problemas comuns no desenvolvimento de software orientado a objetos. Cada padrão é detalhadamente descrito, incluindo a problemática que resolve, a estrutura da solução e as considerações de implementação.&lt;/p&gt;

&lt;p&gt;Ao compreender e aplicar os padrões de projeto apresentados neste livro, os desenvolvedores podem elevar substancialmente a qualidade do  código que produzem.&lt;/p&gt;

&lt;p&gt;Seja você um novato ou um veterano na programação orientada a objetos, este livro permanece como uma fonte de conhecimento inestimável que continua a moldar e influenciar a prática da engenharia de software até hoje. É uma leitura obrigatória para aqueles que aspiram a se tornar verdadeiros mestres na criação de software de alta qualidade e eficiência.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com.br/Padr%C3%B5es-Projetos-Solu%C3%A7%C3%B5es-Reutiliz%C3%A1veis-Orientados/dp/8573076100?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;amp;crid=1XFPLTHRYXDJS&amp;amp;keywords=Padr%C3%B5es+de+Projetos%3A+Solu%C3%A7%C3%B5es+Reutiliz%C3%A1veis+de+Software+Orientados+a+Objetos&amp;amp;qid=1700676718&amp;amp;sprefix=padr%C3%B5es+de+projetos+solu%C3%A7%C3%B5es+reutiliz%C3%A1veis+de+software+orientados+a+objetos%2Caps%2C455&amp;amp;sr=8-1&amp;amp;ufe=app_do%3Aamzn1.fos.6d798eae-cadf-45de-946a-f477d47705b9&amp;amp;linkCode=li3&amp;amp;tag=d3vlopes-20&amp;amp;linkId=35c3adf69307244207861c1d32210617&amp;amp;language=pt_BR&amp;amp;ref_=as_li_ss_il"&gt;Comprar agora&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Entendendo Algoritmos: Um Guia Ilustrado Para Programadores e Outros Curiosos
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com.br/Entendendo-Algoritmos-Ilustrado-Programadores-Curiosos/dp/8575225634?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;amp;crid=32U57TGIRRTY8&amp;amp;keywords=Entendendo+Algoritmos%3A+Um+Guia+Ilustrado+Para+Programadores+e+Outros+Curiosos&amp;amp;qid=1700676891&amp;amp;sprefix=entendendo+algoritmos+um+guia+ilustrado+para+programadores+e+outros+curiosos%2Caps%2C212&amp;amp;sr=8-1&amp;amp;linkCode=li3&amp;amp;tag=d3vlopes-20&amp;amp;linkId=62c11a9aa527a2fba7938a5522189968&amp;amp;language=pt_BR&amp;amp;ref_=as_li_ss_il"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;ASIN=8575225634&amp;amp;Format=_SL250_&amp;amp;ID=AsinImage&amp;amp;MarketPlace=BR&amp;amp;ServiceVersion=20070822&amp;amp;WS=1&amp;amp;tag=d3vlopes-20&amp;amp;language=pt_BR"&gt;&lt;/a&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GtDiLfcg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ir-br.amazon-adsystem.com/e/ir%3Ft%3Dd3vlopes-20%26language%3Dpt_BR%26l%3Dli3%26o%3D33%26a%3D8575225634" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GtDiLfcg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ir-br.amazon-adsystem.com/e/ir%3Ft%3Dd3vlopes-20%26language%3Dpt_BR%26l%3Dli3%26o%3D33%26a%3D8575225634" alt="" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esse livro é extraordinário, ele descreve diversos algoritmos de forma acessível e envolvente. Escrito por Aditya Bhargava, esse livro oferece uma jornada única através do mundo dos algoritmos, tornando conceitos complexos compreensíveis para programadores de todos os níveis de experiência.&lt;/p&gt;

&lt;p&gt;Com uma abordagem visual e prática, este livro utiliza ilustrações claras e exemplos do mundo real para explicar os fundamentos dos algoritmos. Desde algoritmos de ordenação até estruturas de dados, Bhargava guia o leitor por meio de técnicas essenciais que são cruciais para resolver problemas complexos de programação.&lt;/p&gt;

&lt;p&gt;O que torna este livro verdadeiramente especial é a sua capacidade de equilibrar profundidade técnica com uma linguagem simples e uma abordagem amigável. Ele não apenas ensina como os algoritmos funcionam, mas também demonstra como aplicá-los de maneira prática em projetos reais.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com.br/Entendendo-Algoritmos-Ilustrado-Programadores-Curiosos/dp/8575225634?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;amp;crid=32U57TGIRRTY8&amp;amp;keywords=Entendendo+Algoritmos%3A+Um+Guia+Ilustrado+Para+Programadores+e+Outros+Curiosos&amp;amp;qid=1700676891&amp;amp;sprefix=entendendo+algoritmos+um+guia+ilustrado+para+programadores+e+outros+curiosos%2Caps%2C212&amp;amp;sr=8-1&amp;amp;linkCode=li3&amp;amp;tag=d3vlopes-20&amp;amp;linkId=62c11a9aa527a2fba7938a5522189968&amp;amp;language=pt_BR&amp;amp;ref_=as_li_ss_il"&gt;Comprar agora&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Desenvolvimento ágil limpo: de volta às origens
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com.br/Desenvolvimento-%C3%A1gil-limpo-volta-origens/dp/8550815004?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;amp;crid=YUQ2F94GUP0T&amp;amp;keywords=Desenvolvimento+%C3%A1gil+limpo%3A+de+volta+%C3%A0s+origens&amp;amp;qid=1700677057&amp;amp;sprefix=desenvolvimento+%C3%A1gil+limpo+de+volta+%C3%A0s+origens%2Caps%2C211&amp;amp;sr=8-1&amp;amp;linkCode=li3&amp;amp;tag=d3vlopes-20&amp;amp;linkId=9eed18e944d92ea9b7c72d1795719ace&amp;amp;language=pt_BR&amp;amp;ref_=as_li_ss_il"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;ASIN=8550815004&amp;amp;Format=_SL250_&amp;amp;ID=AsinImage&amp;amp;MarketPlace=BR&amp;amp;ServiceVersion=20070822&amp;amp;WS=1&amp;amp;tag=d3vlopes-20&amp;amp;language=pt_BR"&gt;&lt;/a&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k6zcqupW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ir-br.amazon-adsystem.com/e/ir%3Ft%3Dd3vlopes-20%26language%3Dpt_BR%26l%3Dli3%26o%3D33%26a%3D8550815004" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k6zcqupW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ir-br.amazon-adsystem.com/e/ir%3Ft%3Dd3vlopes-20%26language%3Dpt_BR%26l%3Dli3%26o%3D33%26a%3D8550815004" alt="" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esse livro é um guia essencial para equipes e profissionais que buscam aprimorar suas práticas ágeis e redescobrir os fundamentos que tornaram o desenvolvimento ágil uma revolução na indústria de software.&lt;/p&gt;

&lt;p&gt;Escrito por alguém que esteve presente no nascimento e contribuiu com a criação do Manifesto Ágil, Robert Martin nos oferece uma perspectiva única sobre como manter a simplicidade e a eficácia no processo de desenvolvimento de software, explorando técnicas e princípios fundamentais.&lt;/p&gt;

&lt;p&gt;Ao mergulhar nas páginas deste livro, você encontrará orientações valiosas sobre como evitar armadilhas comuns, promover a colaboração efetiva da equipe e, acima de tudo, entregar produtos de alta qualidade que atendam às necessidades dos clientes.&lt;/p&gt;

&lt;p&gt;Seja você um novato ou um veterano no mundo ágil, este livro proporcionará uma visão esclarecedora e uma fonte de inspiração para levar suas práticas de desenvolvimento a um novo patamar. Prepare-se para embarcar em uma jornada que o levará de volta às origens do desenvolvimento ágil, equipando-o com as ferramentas e o conhecimento necessários para alcançar o sucesso em qualquer projeto.&lt;/p&gt;

&lt;p&gt;Esta obra é um verdadeiro tesouro para todos os envolvidos no processo de desenvolvimento de software e um guia indispensável para aqueles que desejam explorar o potencial máximo do desenvolvimento ágil.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com.br/Desenvolvimento-%C3%A1gil-limpo-volta-origens/dp/8550815004?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;amp;crid=YUQ2F94GUP0T&amp;amp;keywords=Desenvolvimento+%C3%A1gil+limpo%3A+de+volta+%C3%A0s+origens&amp;amp;qid=1700677057&amp;amp;sprefix=desenvolvimento+%C3%A1gil+limpo+de+volta+%C3%A0s+origens%2Caps%2C211&amp;amp;sr=8-1&amp;amp;linkCode=li3&amp;amp;tag=d3vlopes-20&amp;amp;linkId=9eed18e944d92ea9b7c72d1795719ace&amp;amp;language=pt_BR&amp;amp;ref_=as_li_ss_il"&gt;Comprar agora&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Refatoração: Aperfeiçoando o Design de Códigos Existentes
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com.br/Refatora%C3%A7%C3%A3o-Aperfei%C3%A7oando-Design-C%C3%B3digos-Existentes/dp/8575227246?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;amp;crid=5AI2J0NX8534&amp;amp;keywords=Refatora%C3%A7%C3%A3o%3A+Aperfei%C3%A7oando+o+Design+de+C%C3%B3digos+Existentes&amp;amp;qid=1700677378&amp;amp;sprefix=refatora%C3%A7%C3%A3o+aperfei%C3%A7oando+o+design+de+c%C3%B3digos+existentes%2Caps%2C215&amp;amp;sr=8-2&amp;amp;ufe=app_do%3Aamzn1.fos.6d798eae-cadf-45de-946a-f477d47705b9&amp;amp;linkCode=li3&amp;amp;tag=d3vlopes-20&amp;amp;linkId=d6be26b1e83c697b82e6945a25656f5f&amp;amp;language=pt_BR&amp;amp;ref_=as_li_ss_il"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;ASIN=8575227246&amp;amp;Format=_SL250_&amp;amp;ID=AsinImage&amp;amp;MarketPlace=BR&amp;amp;ServiceVersion=20070822&amp;amp;WS=1&amp;amp;tag=d3vlopes-20&amp;amp;language=pt_BR"&gt;&lt;/a&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d05zcTc_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ir-br.amazon-adsystem.com/e/ir%3Ft%3Dd3vlopes-20%26language%3Dpt_BR%26l%3Dli3%26o%3D33%26a%3D8575227246" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d05zcTc_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ir-br.amazon-adsystem.com/e/ir%3Ft%3Dd3vlopes-20%26language%3Dpt_BR%26l%3Dli3%26o%3D33%26a%3D8575227246" alt="" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Um clássico escrito por Martin Fowler, este livro oferece uma abordagem prática e abrangente para aprimorar o design de código legado.&lt;/p&gt;

&lt;p&gt;Fowler apresenta uma coleção de técnicas e padrões de refatoração, demonstrando como transformar código complexo e difícil de manter em uma base sólida e flexível. Com exemplos práticos e casos de estudo do mundo real, você vai embarcar através do processo de melhoria contínua do código, promovendo maior legibilidade, facilidade de manutenção e eficiência.&lt;/p&gt;

&lt;p&gt;Esta obra é essencial para desenvolvedores de todos os níveis de experiência que buscam elevar a qualidade do código e aprimorar a arquitetura de software. Ao ler esse livro você estará equipado com um arsenal de técnicas de refatoração e será capazes de criar sistemas mais robustos e adaptáveis, capazes de enfrentar os desafios do desenvolvimento de software moderno.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com.br/Refatora%C3%A7%C3%A3o-Aperfei%C3%A7oando-Design-C%C3%B3digos-Existentes/dp/8575227246?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;amp;crid=G8HRBGPYCF9G&amp;amp;keywords=Refatora%C3%A7%C3%A3o%3A+Aperfei%C3%A7oando+o+Design+de+C%C3%B3digos+Existentes&amp;amp;qid=1700677159&amp;amp;sprefix=refatora%C3%A7%C3%A3o+aperfei%C3%A7oando+o+design+de+c%C3%B3digos+existentes%2Caps%2C217&amp;amp;sr=8-2&amp;amp;ufe=app_do%3Aamzn1.fos.6d798eae-cadf-45de-946a-f477d47705b9&amp;amp;linkCode=li2&amp;amp;tag=d3vlopes-20&amp;amp;linkId=382242df36e70d716f7061ef5b2ba4c3&amp;amp;language=pt_BR&amp;amp;ref_=as_li_ss_il"&gt;Comprar agora&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Código limpo: habilidades práticas do Agile software
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com.br/C%C3%B3digo-limpo-Robert-C-Martin/dp/8576082675?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;amp;crid=G8HRBGPYCF9G&amp;amp;keywords=Refatora%C3%A7%C3%A3o%3A+Aperfei%C3%A7oando+o+Design+de+C%C3%B3digos+Existentes&amp;amp;qid=1700677159&amp;amp;sprefix=refatora%C3%A7%C3%A3o+aperfei%C3%A7oando+o+design+de+c%C3%B3digos+existentes%2Caps%2C217&amp;amp;sr=8-1-spons&amp;amp;sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&amp;amp;psc=1&amp;amp;linkCode=li3&amp;amp;tag=d3vlopes-20&amp;amp;linkId=92be34cc6e75751880397496289a3db5&amp;amp;language=pt_BR&amp;amp;ref_=as_li_ss_il"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;ASIN=8576082675&amp;amp;Format=_SL250_&amp;amp;ID=AsinImage&amp;amp;MarketPlace=BR&amp;amp;ServiceVersion=20070822&amp;amp;WS=1&amp;amp;tag=d3vlopes-20&amp;amp;language=pt_BR"&gt;&lt;/a&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zP7D9hbb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ir-br.amazon-adsystem.com/e/ir%3Ft%3Dd3vlopes-20%26language%3Dpt_BR%26l%3Dli3%26o%3D33%26a%3D8576082675" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zP7D9hbb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://ir-br.amazon-adsystem.com/e/ir%3Ft%3Dd3vlopes-20%26language%3Dpt_BR%26l%3Dli3%26o%3D33%26a%3D8576082675" alt="" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uma bíblia sobre boas práticas, esse livro é um guia essencial para desenvolvedores que buscam elevar a qualidade e a legibilidade de seus códigos. Escrito por Robert Martin, este livro oferece uma abordagem prática e abrangente para escrever códigos que se destacam.&lt;/p&gt;

&lt;p&gt;Martin apresenta uma série de princípios e técnicas, apoiados por exemplos do mundo real, que ajudam os desenvolvedores a produzir código claro, eficiente e de fácil manutenção. Ao explorar temas como nomenclatura, funções, classes e estruturas de controle, o autor fornece um conjunto valioso de diretrizes que promovem a criação de software de alta qualidade.&lt;/p&gt;

&lt;p&gt;Esta obra é uma leitura indispensável para qualquer profissional que se preocupa com a arte de escrever código limpo e eficaz. Ao aplicar os ensinamentos deste livro, os desenvolvedores serão capazes de produzir software que não apenas funciona, mas que também é fácil de entender, modificar e expandir.&lt;/p&gt;

&lt;p&gt;Este livro é uma fonte inestimável de conhecimento que transformará a maneira como você aborda o processo de codificação.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com.br/C%C3%B3digo-limpo-Robert-C-Martin/dp/8576082675?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;amp;crid=G8HRBGPYCF9G&amp;amp;keywords=Refatora%C3%A7%C3%A3o%3A+Aperfei%C3%A7oando+o+Design+de+C%C3%B3digos+Existentes&amp;amp;qid=1700677159&amp;amp;sprefix=refatora%C3%A7%C3%A3o+aperfei%C3%A7oando+o+design+de+c%C3%B3digos+existentes%2Caps%2C217&amp;amp;sr=8-1-spons&amp;amp;sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&amp;amp;psc=1&amp;amp;linkCode=li3&amp;amp;tag=d3vlopes-20&amp;amp;linkId=92be34cc6e75751880397496289a3db5&amp;amp;language=pt_BR&amp;amp;ref_=as_li_ss_il"&gt;Comprar agora&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Gostou das indicações? Quais você já leu ou quer ler? Tem alguma indicação? Compartilha aqui nos comentários.&lt;/p&gt;

</description>
      <category>development</category>
      <category>books</category>
      <category>livros</category>
      <category>developers</category>
    </item>
    <item>
      <title>Scrum para devs - Papéis</title>
      <dc:creator>Leandro Lopes</dc:creator>
      <pubDate>Thu, 24 Aug 2023 16:57:21 +0000</pubDate>
      <link>https://forem.com/d3vlopes/scrum-para-devs-papeis-415</link>
      <guid>https://forem.com/d3vlopes/scrum-para-devs-papeis-415</guid>
      <description>&lt;p&gt;O Scrum é o framework mais utilizado no mercado para desenvolvimento de software e nesse artigo vamos conhecer os papéis que ele nos apresenta e como cada um contribui para a criação de um produto de sucesso.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scrum Master
&lt;/h2&gt;

&lt;p&gt;O Scrum Master é como o maestro de uma orquestra, garantindo que todos os membros da equipe toquem em harmonia.&lt;/p&gt;

&lt;p&gt;Sua responsabilidade principal é facilitar a adoção e a implementação bem-sucedida do Scrum. Isso envolve &lt;strong&gt;remover obstáculos&lt;/strong&gt; que possam impedir o progresso da equipe, garantindo que as práticas ágeis sejam seguidas corretamente.&lt;/p&gt;

&lt;p&gt;O Scrum Master também atua como um escudo protetor, mantendo as distrações longe da equipe para que possam se concentrar no desenvolvimento do produto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Product Owner
&lt;/h2&gt;

&lt;p&gt;O Product Owner é como um treinador de futebol, definindo o que o time deve treinar e se os resultados apresentados pelo time são satisfatórios.&lt;/p&gt;

&lt;p&gt;O Product Owner é a &lt;strong&gt;voz dos stakeholders&lt;/strong&gt;, sua responsabilidade é transformar as necessidades dos usuários em itens do backlog claros e compreensíveis para o time de desenvolvimento.&lt;/p&gt;

&lt;p&gt;O Product Owner é quem valida os entregáveis do time, verificando se estão em conformidade com as necessidades dos usuários.&lt;/p&gt;

&lt;h2&gt;
  
  
  Time de desenvolvimento
&lt;/h2&gt;

&lt;p&gt;O time de desenvolvimento é o coração pulsante do Scrum, realizando o trabalho necessário para &lt;strong&gt;transformar os itens do backlog em incrementos para o produto&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Cada membro da equipe é como um músico em uma banda, trazendo suas habilidades únicas para criar uma sinfonia harmoniosa. &lt;/p&gt;

&lt;p&gt;O time de desenvolvimento trabalha nos itens que o Product Owner prioriziou no backlog, definindo o que pode ser entregue na sprint.&lt;/p&gt;

&lt;p&gt;O time de desenvolvimento também trabalha próximo do Scrum Master, reportando qualquer impedimento que possa ter que impeça que as metas sejam alcançadas.&lt;/p&gt;




&lt;p&gt;Cada papel tem suas responsabilidades e contribuições únicas, e é a interação entre esses papéis que permite ao Scrum atingir seus objetivos de flexibilidade, transparência e entrega contínua de valor ao longo do ciclo de desenvolvimento.&lt;/p&gt;

&lt;p&gt;Scrum é uma ferramenta incrível que todo desenvolvedor precisa aprender!!&lt;/p&gt;

&lt;p&gt;Quer aprender a desenvolver software de forma ágil com Scrum?&lt;/p&gt;

&lt;p&gt;No &lt;a href="https://www.uniondevelopers.com.br"&gt;Union Developers&lt;/a&gt; você participa de todos os rituais do Scrum, apredendo enquanto participa do projeto, dessa forma você aprende já sabendo como que é aplicado no mundo real.&lt;/p&gt;

&lt;p&gt;Acesse nossa página e venha aprender Scrum de uma forma prática e intuitiva a como trabalhar com essa importante ferramenta no desenvolvimento de software.&lt;/p&gt;

</description>
      <category>scrum</category>
      <category>development</category>
      <category>agile</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Como conseguir ganhar experiência como desenvolvedor júnior sem estar em uma empresa?</title>
      <dc:creator>Leandro Lopes</dc:creator>
      <pubDate>Fri, 18 Aug 2023 00:10:51 +0000</pubDate>
      <link>https://forem.com/d3vlopes/como-conseguir-ganhar-experiencia-como-desenvolvedor-junior-sem-estar-em-uma-empresa-3h9j</link>
      <guid>https://forem.com/d3vlopes/como-conseguir-ganhar-experiencia-como-desenvolvedor-junior-sem-estar-em-uma-empresa-3h9j</guid>
      <description>&lt;p&gt;No mercado competitivo de tecnologia, a busca por oportunidades para desenvolvedores juniors pode ser frustante.&lt;/p&gt;

&lt;p&gt;As empresas buscam profissionais com experiência, o que pode deixar alguns desenvolvedores se perguntando: como adquirir experiência sem estar no mercado?&lt;/p&gt;

&lt;p&gt;Se você se identifica com essa questão, saiba que você não está sozinho.&lt;/p&gt;

&lt;p&gt;A boa noticia é que existem alternativas para ganhar experiência e desenvolver habilidades essenciais para o mercado de trabalho, mesmo fora do ambiente corporativo.&lt;/p&gt;

&lt;p&gt;Uma dessas alternativas é o &lt;a href="//uniondevelopers.com.br"&gt;Union Developers&lt;/a&gt;, que busca ajudar desenvolvedores juniors a conquistar experiência e habilidades necessárias para entrar no mercado.&lt;/p&gt;

&lt;p&gt;No Union, nosso objetivo é oferecer uma experiência única e valiosa para desenvolvedores que buscam aprimorar suas habilidades e competências.&lt;/p&gt;

&lt;p&gt;Através de uma abordagem prática e imersiva, buscamos proporcionar uma experiência que se assemelha ao cotidiano de uma empresa real, onde os membros do Union têm a oportunidade única de adquirir a experiência que falta.&lt;/p&gt;

&lt;p&gt;Nossos projetos são gerenciados utilizando métodologias ágeis, que permitem que os membros desenvolvam habilidades essenciais, como trabalho em equipe, comunicação e inteligência emocional.&lt;/p&gt;

&lt;p&gt;Para tornar a experiência ainda mais enriquecedora, contamos com desenvolvedores experientes que guiam os membros em suas jornadas, proporcionando insights valiosos e orientação durante todo o processo.&lt;/p&gt;

&lt;p&gt;Se você é um desenvolvedor júnior em busca de oportunidades para desenvolver suas habilidades e construir uma base sólida para sua carreira, o Union é o lugar perfeito para você.&lt;/p&gt;

&lt;p&gt;Acesse agora &lt;strong&gt;uniondevelopers.com.br&lt;/strong&gt; e saiba como participar desse projeto incrível e inovador!&lt;/p&gt;

</description>
      <category>career</category>
      <category>development</category>
      <category>frontend</category>
      <category>backend</category>
    </item>
  </channel>
</rss>
