<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>TypeScript Archives - Hiago Silva Souza</title>
	<atom:link href="https://www.hiago.me/category/typescript/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.hiago.me/category/typescript/</link>
	<description></description>
	<lastBuildDate>Fri, 16 Oct 2020 20:02:04 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.5</generator>

<image>
	<url>https://www.hiago.me/wp-content/uploads/2019/01/cropped-icon-hiagus-2-32x32.png</url>
	<title>TypeScript Archives - Hiago Silva Souza</title>
	<link>https://www.hiago.me/category/typescript/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">147457425</site>	<item>
		<title>TypeScript: Propriedades requeridas para opcionais</title>
		<link>https://www.hiago.me/2020/10/16/typescript-propriedades-requeridas-para-opcionais/</link>
					<comments>https://www.hiago.me/2020/10/16/typescript-propriedades-requeridas-para-opcionais/#respond</comments>
		
		<dc:creator><![CDATA[Hiago Souza]]></dc:creator>
		<pubDate>Fri, 16 Oct 2020 19:57:59 +0000</pubDate>
				<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[intellisense]]></category>
		<category><![CDATA[transformar]]></category>
		<category><![CDATA[type]]></category>
		<category><![CDATA[typescript]]></category>
		<guid isPermaLink="false">https://www.hiago.me/?p=705</guid>

					<description><![CDATA[<p>Quem nunca precisou aproveitar uma entidade no TypeScript e acabou criando uma classe auxiliar só por conta das propriedades obrigatórias? Porque não criar um type para transformar propriedades requeridas em opcionais. Um exemplo disso é a rotina de update com o TypeORM, você quer atualizar somente algumas propriedades e se você definir a sua entidade &#8230;</p>
<p>The post <a href="https://www.hiago.me/2020/10/16/typescript-propriedades-requeridas-para-opcionais/">TypeScript: Propriedades requeridas para opcionais</a> appeared first on <a href="https://www.hiago.me">Hiago Silva Souza</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Quem nunca precisou aproveitar uma entidade no <a href="http://typescript">TypeScript</a> e acabou criando uma classe auxiliar só por conta das propriedades obrigatórias? Porque não criar um type para transformar propriedades requeridas em opcionais.</p>



<p>Um exemplo disso é a rotina de update com o TypeORM, você quer atualizar somente algumas propriedades e se você definir a sua entidade na assinatura do seu método você acaba tendo que fazer um cast só para o intellisense parar de te perturbar.</p>



<p>Para resolver esse problema com o type do TypeScript, com o código abaixo você cria um tipo de dado que irá estender o tipo de sua entidade e retornar um tipo com as mesmas propriedades como opcionais e tudo isso de forma dinâmica. Assim você conseguirá transformar propriedades requeridas em opcionais</p>



<p>Vamos aos códigos né?</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
/// entidade-opcional.ts
export type EntidadeOpcional&lt;T&gt; = {
    &#x5B;P in keyof Required&lt;T&gt;]?: Pick&lt;T, P&gt; extends Required&lt;Pick&lt;T, P&gt;&gt; ? T&#x5B;P] : (T&#x5B;P] | undefined);
}

/// minha-entity.ts
export class UsuarioEntity {
    id: number;
    nome: string;
    telefone?: string;
    email: string;
    senha: string;
}

/// service.ts
export class LoginService {
     autenticar(minhaEntity: EntidadeOpcional&lt;MinhaEntity&gt;) {
            //// rotinha de update
     }
}


let service: MeuService = new MeuService();

// chamo o autenticar, informando apenas email e senha e não obtenho erro.
this.autenticar({email: &#039;&#039;, senha: &#039;&#039;});
</pre></div>


<h2 class="wp-block-heading">Conclusão</h2>



<p>Bom pessoal, apesar de simples o conteúdo desse post ele me ajudou bastante em um projeto com <a href="https://www.hiago.me/2018/05/13/nestjs-uma-estrutura-nodejs-linda-e-trabalhada/">NestJS</a>. O objetivo é compartilhar esse trechinho de código com vocês sem escrever muita coisa =)</p>



<p>Se o isso te ajudou, deixa um comentário ^^</p>


<p>[wp_ad_camp_3]</p>



<p></p>
<p>The post <a href="https://www.hiago.me/2020/10/16/typescript-propriedades-requeridas-para-opcionais/">TypeScript: Propriedades requeridas para opcionais</a> appeared first on <a href="https://www.hiago.me">Hiago Silva Souza</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.hiago.me/2020/10/16/typescript-propriedades-requeridas-para-opcionais/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">705</post-id>	</item>
		<item>
		<title>TypeScript: Interface ou Classes?</title>
		<link>https://www.hiago.me/2018/09/16/typescript-interface-ou-classes/</link>
					<comments>https://www.hiago.me/2018/09/16/typescript-interface-ou-classes/#comments</comments>
		
		<dc:creator><![CDATA[Hiago Souza]]></dc:creator>
		<pubDate>Sun, 16 Sep 2018 19:47:59 +0000</pubDate>
				<category><![CDATA[Angular]]></category>
		<category><![CDATA[Ionic]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[angular]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[transpilacao]]></category>
		<category><![CDATA[typescript]]></category>
		<guid isPermaLink="false">https://www.hiago.me/?p=448</guid>

					<description><![CDATA[<p>Em aula o professor citou uma diferença bem importante entre o uso de interface e de classes no TypeScript. Então resolvi fazer um post para mostrar a vocês qual é essa diferença e como ela impactar seus aplicativos. TypeScript [wp_ad_camp_3] O TypeScript é uma linguagem criada pela microsoft para ajudar na criação de aplicações JavaScript &#8230;</p>
<p>The post <a href="https://www.hiago.me/2018/09/16/typescript-interface-ou-classes/">TypeScript: Interface ou Classes?</a> appeared first on <a href="https://www.hiago.me">Hiago Silva Souza</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Em aula o professor citou uma diferença bem importante entre o uso de interface e de classes no TypeScript. Então resolvi fazer um post para mostrar a vocês qual é essa diferença e como ela impactar seus aplicativos.</p>
<h1>TypeScript</h1>
<p><span style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: 'Source Sans Pro',Arial,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">[wp_ad_camp_3]</span></p>
<p style="text-align: left;">O TypeScript é uma linguagem criada pela microsoft para ajudar na criação de aplicações JavaScript adicionando recursos poderosos como por exemplo: tipagem e propriedades estáticas. As classes foram introduzidas oficialmente no ecossistema do javascript no ES6 mas por razões de compatibilidade o TypeScript permite que você faça a transpilação para o ES5 para aumentar a compatibilidade do seu código.</p>
<h1>O que é transpilação?</h1>
<p>Transpilação nada mais é que pegar seu código e converter ele para outro em tempo de compilação ou seja, o programador escreve seu código em uma linguagem e após compilar ele converte esse código para um equivalente em outra linguagem de programação.</p>
<h1>Problema?</h1>
<p><span style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: 'Source Sans Pro',Arial,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">[wp_ad_camp_2]</span></p>
<p>Geralmente quando desenvolvemos fazendo o uso do TypeScript seguimos a lógica de modelar todas as nossas informações (o que é sensacional e deve ser feito) e para isso geralmente seguimos nossos conhecimento de orientação a objetos e saímos criando nossas classes de modelos (as models). O problema é que o uso de classes gera um over head muito grande no código transpilado e isso aumenta o tamanho de nossos arquivos JS e com isso o tamanho de nosso aplicativo.</p>
<p>Abaixo deixo uma imagem de uma classe no TypeScript:</p>
<p><img fetchpriority="high" decoding="async" class="alignnone size-medium wp-image-449" src="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-typescript-300x186.png" alt="" width="300" height="186" srcset="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-typescript-300x186.png 300w, https://www.hiago.me/wp-content/uploads/2018/09/exemplo-typescript.png 504w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>O resultado do código acima após ser transpilado seria um código mais ou menos como esse na imagem abaixo:</p>
<p><img decoding="async" class="alignnone size-medium wp-image-450" src="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-gerado-js-300x217.png" alt="" width="300" height="217" srcset="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-gerado-js-300x217.png 300w, https://www.hiago.me/wp-content/uploads/2018/09/exemplo-gerado-js.png 604w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>É muito código para uma definição de uma classe não concordam?</p>
<h1>E a solução?</h1>
<p><span style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: 'Source Sans Pro',Arial,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">[wp_ad_camp_1]</span></p>
<p>Em JavaScript a tipagem não existe ou seja o tipo da variável é o que tem dentro dela. O TypeScript ajuda no desenvolvimento implementando controles como esses minimizando erros e melhorando a performance no desenvolvimento. Ao criar uma interface o TypeScript faz o uso dela na compilação e após isso não faz a transpilação para o JavaScript. Já as classes são definições, elas possuem métodos com regras aplicadas e isso precisa ser transpilado.</p>
<p>Mas calma, não se apavorem! Muitas classes realmente precisam e devem ser implementadas dessa forma mas nas classes de modelo não tem essa necessidade, afinal de contas não é comum você implementar métodos em suas models não é mesmo? Para isso podemos simplesmente substituir nossas classes de modelos por &#8220;interfaces&#8221; assim ao transpilar elas não vão gerar esse código &#8220;desnecessário&#8221; em nossa aplicação.</p>
<p>Abaixo deixo o exemplo de definição para a mesma classe só que fazendo uso de interface:</p>
<p><img decoding="async" class="alignnone size-medium wp-image-451" src="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-interface-typescript-300x134.png" alt="" width="300" height="134" srcset="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-interface-typescript-300x134.png 300w, https://www.hiago.me/wp-content/uploads/2018/09/exemplo-interface-typescript.png 581w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>O resultado do código transpilado é exatamente como na imagem abaixo:</p>
<p><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-452" src="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-interface-javascript-300x44.png" alt="" width="300" height="44" srcset="https://www.hiago.me/wp-content/uploads/2018/09/exemplo-interface-javascript-300x44.png 300w, https://www.hiago.me/wp-content/uploads/2018/09/exemplo-interface-javascript.png 606w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>O resultado da transpilação não gera código JavaScript isso é importante porque diminui o tamanho do build e melhora o tempo de processamento para tarefas como concat e minify.</p>
<h1>Conclusão</h1>
<p>Uma simples mudança ajuda na diminuição de tamanho do build de nossos sistemas e melhora o seu tempo de compilação. O Angular é um exemplo que usa esse pensamento em suas bibliotecas, eles simplesmente exportam as interfaces para serem utilizadas nos projetos.</p>
<p>Deixo como dica o site <a href="http://www.typescriptlang.org/play/">http://www.typescriptlang.org/play/</a> entrem lá coloquem o conteúdo de todas as suas models e façam vocês mesmo os testes.</p>
<p>The post <a href="https://www.hiago.me/2018/09/16/typescript-interface-ou-classes/">TypeScript: Interface ou Classes?</a> appeared first on <a href="https://www.hiago.me">Hiago Silva Souza</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.hiago.me/2018/09/16/typescript-interface-ou-classes/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">448</post-id>	</item>
		<item>
		<title>Depurar uma aplicação ionic no VSCode</title>
		<link>https://www.hiago.me/2018/06/06/depurar-uma-aplicacao-ionic-no-vscode/</link>
					<comments>https://www.hiago.me/2018/06/06/depurar-uma-aplicacao-ionic-no-vscode/#comments</comments>
		
		<dc:creator><![CDATA[Hiago Souza]]></dc:creator>
		<pubDate>Thu, 07 Jun 2018 01:53:28 +0000</pubDate>
				<category><![CDATA[Ionic]]></category>
		<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[ionic]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[remote debug]]></category>
		<category><![CDATA[typescript]]></category>
		<category><![CDATA[visual studio code]]></category>
		<category><![CDATA[vscode]]></category>
		<guid isPermaLink="false">https://www.hiago.me/?p=334</guid>

					<description><![CDATA[<p>Boa noite pessoal, sejam bem vindos a mais um post! Hoje vou falar de ionic (2/3) com o Visual Studio Code. Estava trabalhando em um aplicação minha quando eu notei que o Visual Studio Code tem a opção de colocar os breakpoints, inclusive no TypeScript então pensei será que tem como depurar minha aplicação direto &#8230;</p>
<p>The post <a href="https://www.hiago.me/2018/06/06/depurar-uma-aplicacao-ionic-no-vscode/">Depurar uma aplicação ionic no VSCode</a> appeared first on <a href="https://www.hiago.me">Hiago Silva Souza</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Boa noite pessoal, sejam bem vindos a mais um post! Hoje vou falar de ionic (2/3) com o Visual Studio Code. Estava trabalhando em um aplicação minha quando eu notei que o Visual Studio Code tem a opção de colocar os breakpoints, inclusive no TypeScript então pensei será que tem como depurar minha aplicação direto do VSCode no Dispositivo e no Browser? Então fui atrás, e consegui fazer funcionar e o resultado foi simplesmente sensacional! Então vamos lá, vamos se preparar para Depurar sua aplicação IONIC com o VSCode no aplicativo compilado sem a necessidade do <strong>chrome://inspect</strong>.</p>
<h1>Extensões</h1>
<p><span style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: 'Source Sans Pro',Arial,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">[wp_ad_camp_3]</span></p>
<p>Vamos preparar para que você possa depurar tanto a aplicação no <strong>ionic serve </strong>(testando em seu browser), como no <strong>ionic cordova run android </strong>(com a aplicação compilada no Android ou iOS).</p>
<p>Para isso vamos precisar de duas extensões do VSCode para nos ajudar, são elas:</p>
<ol>
<li>Debugger for Chrome (distribuído pela própria Microsoft)<br />
<img loading="lazy" decoding="async" class="alignnone size-medium wp-image-335" src="https://www.hiago.me/wp-content/uploads/2018/06/debugger-for-chrome-300x109.png" alt="" width="300" height="109" srcset="https://www.hiago.me/wp-content/uploads/2018/06/debugger-for-chrome-300x109.png 300w, https://www.hiago.me/wp-content/uploads/2018/06/debugger-for-chrome.png 417w" sizes="(max-width: 300px) 100vw, 300px" /></li>
<li>Cordova Tools<br />
<img loading="lazy" decoding="async" class="alignnone size-medium wp-image-336" src="https://www.hiago.me/wp-content/uploads/2018/06/cordova-tools-300x92.png" alt="" width="300" height="92" srcset="https://www.hiago.me/wp-content/uploads/2018/06/cordova-tools-300x92.png 300w, https://www.hiago.me/wp-content/uploads/2018/06/cordova-tools.png 490w" sizes="(max-width: 300px) 100vw, 300px" /></li>
</ol>
<h1>Configurando o VSCode</h1>
<p><span style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: 'Source Sans Pro',Arial,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">[wp_ad_camp_2]</span></p>
<p>Após instalar as extensões você pode ir na sessão de debug do vscode (4º ícone da barra lateral esquerda). Lá você clica na engrenagem que fica após o combobox e escolha a opção <strong>Cordova</strong>.</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-339" src="https://www.hiago.me/wp-content/uploads/2018/06/passo-a-passo-vscode-300x162.png" alt="" width="783" height="423" srcset="https://www.hiago.me/wp-content/uploads/2018/06/passo-a-passo-vscode-300x162.png 300w, https://www.hiago.me/wp-content/uploads/2018/06/passo-a-passo-vscode-768x416.png 768w, https://www.hiago.me/wp-content/uploads/2018/06/passo-a-passo-vscode-1024x554.png 1024w, https://www.hiago.me/wp-content/uploads/2018/06/passo-a-passo-vscode.png 1096w" sizes="(max-width: 783px) 100vw, 783px" /></p>
<p>Logo após isso vai ser criado o arquivo launch.json com diversas opções de debug disponíveis. Porém vamos apagar o conteúdo atual do arquivo e colocar o conteúdo abaixo no lugar.</p>
<pre class="brush: jscript; title: ; notranslate">
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    &quot;version&quot;: &quot;0.2.0&quot;,
    &quot;configurations&quot;: &#x5B;
        {
            &quot;name&quot;: &quot;Depurar no Chrome&quot;,
            &quot;type&quot;: &quot;chrome&quot;,
            &quot;request&quot;: &quot;launch&quot;,
            &quot;url&quot;: &quot;http://localhost:8100&quot;,
            &quot;sourceMaps&quot;: true,
            &quot;webRoot&quot;: &quot;${workspaceRoot}/www&quot;
        },
        {
            &quot;name&quot;: &quot;Depurar no Android&quot;,
            &quot;type&quot;: &quot;cordova&quot;,
            &quot;request&quot;: &quot;attach&quot;,
            &quot;platform&quot;: &quot;android&quot;,
            &quot;target&quot;: &quot;device&quot;,
            &quot;port&quot;: 9222,
            &quot;sourceMaps&quot;: true,
            &quot;cwd&quot;: &quot;${workspaceRoot}&quot;
        },
        {
            &quot;name&quot;: &quot;Depurar no iOS&quot;,
            &quot;type&quot;: &quot;cordova&quot;,
            &quot;request&quot;: &quot;attach&quot;,
            &quot;platform&quot;: &quot;ios&quot;,
            &quot;target&quot;: &quot;device&quot;,
            &quot;port&quot;: 9220,
            &quot;sourceMaps&quot;: true,
            &quot;cwd&quot;: &quot;${workspaceRoot}&quot;
        }
    ]
}
</pre>
<p>Ao colocar esse código e salvar feche e abra o seu Visual Studio Code e na sessão de debug você já terá disponível o &#8220;Depurar no Chrome&#8221;, &#8220;Depurar no Android&#8221; e <span style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: 'Source Sans Pro',Arial,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">&#8220;Depurar no iOS&#8221;</span>.</p>
<h1>Vamos testar?</h1>
<p><span style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: 'Source Sans Pro',Arial,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">[wp_ad_camp_1]</span></p>
<p>Agora é a hora que todos estavam esperando não é mesmo? Vamos fazer 2 testes, o primeiro é depurando usando o próprio google chrome, e o segundo é fazendo a depuração usando o próprio dispositivo.</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-344" src="https://www.hiago.me/wp-content/uploads/2018/06/opcoes-disponiveis-300x216.png" alt="" width="774" height="557" srcset="https://www.hiago.me/wp-content/uploads/2018/06/opcoes-disponiveis-300x216.png 300w, https://www.hiago.me/wp-content/uploads/2018/06/opcoes-disponiveis-768x552.png 768w, https://www.hiago.me/wp-content/uploads/2018/06/opcoes-disponiveis.png 782w" sizes="(max-width: 774px) 100vw, 774px" /></p>
<ul>
<li>Obs: Na imagem não contém o depurar no iOS pois como não tenho um Mac eu removi a opção, mas na empresa eu testei e vai rolar na maçã 😉</li>
</ul>
<h2>Depurando no Browser</h2>
<p>Para fazer o debug tanto na aplicação compilada quando no browser primeiro é necessário rodar o comando do ionic responsável pela plataforma desejada. No browser vamos no terminal e executar o comando &#8220;<strong>ionic serve &#8211;nobrowser</strong>&#8220;. Assim que finalizar o processo de compilação, vá até a opção de debug selecione a opção &#8220;<strong>Depurar no Chrome</strong>&#8220;. Assim que o navegador for aberto e o rodapé do seu VSCode estiver laranja, você já está depurando sua aplicação.</p>
<p>Vai fundo, coloque um breakpoint em uma de suas rotinas e seja feliz!</p>
<h2>Depurando no Dispositivo</h2>
<p>O processo de depuração no dispositivo é bem semelhante ao do browser. Você precisa executar a usando o comando desejado no meu caso &#8220;<strong>ionic cordova run android -l</strong>&#8220;. No meu caso vou colocar o -l para fazer o uso do live reload dentro do dispositivo.</p>
<p>Assim que compilar e o aplicativo estiver aberto em seu dispositivo, basta você selecionar a opção <span style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: 'Source Sans Pro',Arial,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">&#8220;</span><strong>Depurar no Android</strong><span style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: 'Source Sans Pro',Arial,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">&#8221; ou &#8220;<strong>Depurar no iOS</strong>&#8221; e aguardar a barra ficar laranja. Após isso é a mesmo processo do browser! Coloque seus breakpoints e seja mais produtivo no seu trabalho.</span></p>
<p><img loading="lazy" decoding="async" class="alignnone  wp-image-350" src="https://www.hiago.me/wp-content/uploads/2018/06/imagem-debug-funcionando-android-300x153.png" alt="" width="778" height="397" srcset="https://www.hiago.me/wp-content/uploads/2018/06/imagem-debug-funcionando-android-300x153.png 300w, https://www.hiago.me/wp-content/uploads/2018/06/imagem-debug-funcionando-android-768x391.png 768w, https://www.hiago.me/wp-content/uploads/2018/06/imagem-debug-funcionando-android-1024x521.png 1024w, https://www.hiago.me/wp-content/uploads/2018/06/imagem-debug-funcionando-android.png 1366w" sizes="(max-width: 778px) 100vw, 778px" /></p>
<p>Obrigado e espero que tenha gostado! Caso tenha alguma dúvida ou sugestão, pode deixar um comentário informando seu e-mail (não envio spams rs). Valeu!</p>
<p>The post <a href="https://www.hiago.me/2018/06/06/depurar-uma-aplicacao-ionic-no-vscode/">Depurar uma aplicação ionic no VSCode</a> appeared first on <a href="https://www.hiago.me">Hiago Silva Souza</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.hiago.me/2018/06/06/depurar-uma-aplicacao-ionic-no-vscode/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">334</post-id>	</item>
		<item>
		<title>Depurar sua aplicação NestJS com o VSCode</title>
		<link>https://www.hiago.me/2018/06/05/depurar-sua-aplicacao-nestjs-com-o-vscode/</link>
					<comments>https://www.hiago.me/2018/06/05/depurar-sua-aplicacao-nestjs-com-o-vscode/#comments</comments>
		
		<dc:creator><![CDATA[Hiago Souza]]></dc:creator>
		<pubDate>Tue, 05 Jun 2018 23:51:53 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[NodeJS]]></category>
		<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[nestjs]]></category>
		<category><![CDATA[type-script]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[visual studio code]]></category>
		<category><![CDATA[vscode]]></category>
		<guid isPermaLink="false">https://www.hiago.me/?p=316</guid>

					<description><![CDATA[<p>No meu último post, apresentei a vocês o NestJS. Hoje vou mostrar para vocês como depurar sua aplicação NestJS com o VSCode. Configurando seu VSCode [wp_ad_camp_3] Primeiro abra seu projeto com o Visual Studio Code após isso vá até o menu de Debug (ctrl + shift + D). Segundo clique sobre a engrenagem ao lado &#8230;</p>
<p>The post <a href="https://www.hiago.me/2018/06/05/depurar-sua-aplicacao-nestjs-com-o-vscode/">Depurar sua aplicação NestJS com o VSCode</a> appeared first on <a href="https://www.hiago.me">Hiago Silva Souza</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>No meu <a href="https://www.hiago.me/2018/05/13/nestjs-uma-estrutura-nodejs-linda-e-trabalhada/" target="_blank" rel="noopener">último post</a>, apresentei a vocês o NestJS. Hoje vou mostrar para vocês como depurar sua aplicação NestJS com o VSCode.</p>
<h1>Configurando seu VSCode</h1>
<p>[wp_ad_camp_3]</p>
<ol>
<li>Primeiro abra seu projeto com o Visual Studio Code após isso vá até o menu de Debug (ctrl + shift + D).<img loading="lazy" decoding="async" class="alignnone size-medium wp-image-317" src="https://www.hiago.me/wp-content/uploads/2018/06/debug-vscode-300x238.png" alt="Imagem com o local do debug." width="300" height="238" srcset="https://www.hiago.me/wp-content/uploads/2018/06/debug-vscode-300x238.png 300w, https://www.hiago.me/wp-content/uploads/2018/06/debug-vscode.png 666w" sizes="(max-width: 300px) 100vw, 300px" /></li>
<li>Segundo clique sobre a engrenagem ao lado do combobox. <img loading="lazy" decoding="async" class="alignnone size-medium wp-image-318" src="https://www.hiago.me/wp-content/uploads/2018/06/debug-vscode-config-294x300.png" alt="Imagem demonstrando engrenagem para configuração do Debug" width="294" height="300" srcset="https://www.hiago.me/wp-content/uploads/2018/06/debug-vscode-config-294x300.png 294w, https://www.hiago.me/wp-content/uploads/2018/06/debug-vscode-config.png 556w" sizes="(max-width: 294px) 100vw, 294px" /></li>
<li>Terceiro clique sobre a opção NodeJS</li>
</ol>
<p>Após concluir o terceiro passo vai ser aberto um arquivo chamado <strong>launch.json (</strong>caso pergunte alguma outra informação selecione algum modelo do NodeJS) e substitua o conteúdo que tem nele pelo conteúdo abaixo:</p>
<pre class="brush: jscript; title: ; notranslate">
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    &quot;version&quot;: &quot;0.2.0&quot;,
    &quot;configurations&quot;: &#x5B;
        {
            &quot;type&quot;: &quot;node&quot;,
            &quot;request&quot;: &quot;launch&quot;,
            &quot;name&quot;: &quot;Depurar Projeto&quot;,
            &quot;protocol&quot;: &quot;inspector&quot;,
            &quot;args&quot;: &#x5B;&quot;${workspaceRoot}\\src\\main.ts&quot;],
            &quot;cwd&quot;: &quot;${workspaceRoot}&quot;,
            &quot;runtimeArgs&quot;: &#x5B;
                &quot;-r&quot;,
                &quot;ts-node/register&quot;
            ],
            &quot;internalConsoleOptions&quot;: &quot;openOnSessionStart&quot;
        }
    ]
}
</pre>
<p>Agora é só salvar o conteúdo e seu VSCode já vai estar configurado para depurar aplicações NodeJS + TypeScript usando o Framework NestJS.</p>
<h1>Depurando a Aplicação</h1>
<p>[wp_ad_camp_2]</p>
<p>Agora você já pode colocar seus breakpoints em seu código (clicando no espaço antes do número da linha) pressionar a tecla F5 em seu teclado e ser feliz!</p>
<p>Observação: Caso não funcione a depuração, tente reiniciar o VSCode para ele ler as configuração de Debug feitas por você, comigo não foi necessário, mas pode ser que aconteça.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-328" src="https://www.hiago.me/wp-content/uploads/2018/06/debug-vscode-exemplo-300x200.png" alt="Imagem demonstando o resultado dos passos aqui executados." width="300" height="200" srcset="https://www.hiago.me/wp-content/uploads/2018/06/debug-vscode-exemplo-300x200.png 300w, https://www.hiago.me/wp-content/uploads/2018/06/debug-vscode-exemplo-768x513.png 768w, https://www.hiago.me/wp-content/uploads/2018/06/debug-vscode-exemplo.png 937w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<h1>Conclusão</h1>
<p>[wp_ad_camp_1]</p>
<p>Com pequenos passos configuramos o ambiente para facilitar nossa vida no trabalho. Escrevi esse post, pois eu fiquei um bom tempo depurando as aplicações usando o <strong>chrome://inspect </strong>e o fato de ficar alternando entre as janelas, tanto para fazer alteração de código quanto para analisar uma informação me incomodava bastante.</p>
<p>&nbsp;</p>
<p>Obrigado e até mais 😉</p>
<p>&nbsp;</p>
<p>The post <a href="https://www.hiago.me/2018/06/05/depurar-sua-aplicacao-nestjs-com-o-vscode/">Depurar sua aplicação NestJS com o VSCode</a> appeared first on <a href="https://www.hiago.me">Hiago Silva Souza</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.hiago.me/2018/06/05/depurar-sua-aplicacao-nestjs-com-o-vscode/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">316</post-id>	</item>
		<item>
		<title>NestJS: Uma estrutura NodeJS linda e trabalhada</title>
		<link>https://www.hiago.me/2018/05/13/nestjs-uma-estrutura-nodejs-linda-e-trabalhada/</link>
					<comments>https://www.hiago.me/2018/05/13/nestjs-uma-estrutura-nodejs-linda-e-trabalhada/#comments</comments>
		
		<dc:creator><![CDATA[Hiago Souza]]></dc:creator>
		<pubDate>Sun, 13 May 2018 15:27:56 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[NodeJS]]></category>
		<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[arquitetura]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[nest]]></category>
		<category><![CDATA[nestjs]]></category>
		<category><![CDATA[nodejs]]></category>
		<guid isPermaLink="false">https://www.hiago.me/?p=297</guid>

					<description><![CDATA[<p>Antes de falar do NestJS vamos lembrar que nos últimos anos, graças ao Node.js, o JavaScript se tornou a “língua franca” da web para aplicativos front e backend, dando origem a projetos incríveis como Angular, React e Vue, que melhoram a produtividade do desenvolvedor e permitem a construção de aplicativos frontend testáveis e extensíveis. No &#8230;</p>
<p>The post <a href="https://www.hiago.me/2018/05/13/nestjs-uma-estrutura-nodejs-linda-e-trabalhada/">NestJS: Uma estrutura NodeJS linda e trabalhada</a> appeared first on <a href="https://www.hiago.me">Hiago Silva Souza</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Antes de falar do NestJS vamos lembrar que nos últimos anos, graças ao Node.js, o JavaScript se tornou a “língua franca” da web para aplicativos front e backend, dando origem a projetos incríveis como Angular, React e Vue, que melhoram a produtividade do desenvolvedor e permitem a construção de</span> aplicativos frontend testáveis e extensíveis. <span class="">No entanto, no lado do servidor, embora existam muitas bibliotecas, assistentes e ferramentas excelentes para o Node, nenhum deles resolve efetivamente o problema principal &#8211; a arquitetura.</p>
<p>O Nest visa fornecer uma arquitetura de aplicativo pronta para uso, que permite a criação sem esforço de aplicativos altamente testáveis, escalonáveis, fracamente acoplados e de fácil manutenção.</p>
<h1>O que é?</h1>
<p>[wp_ad_camp_3]</p>
<p>O NestJS é uma estrutura para criar aplicativos do lado do servidor <a href="https://nodejs.org" target="_blank" rel="noopener">Node.js </a>de forma eficiente e escalável. Ele usa JavaScript moderno, é construído com o <a href="https://www.typescriptlang.org/" target="_blank" rel="noopener">TypeScript</a> (porém preserva a compatibilidade com JavaScript puro) e combina elementos de OOP (Programação Orientada a Objetos), FP (Programação Funcional) e FRP (Programação Reativa Funcional).</p>
<p>Por trás de tudo, o NestJS faz uso do Express, permitindo o uso fácil dos inúmeros plugins de terceiros disponíveis.</p>
<h1>O Desenvolvimento</h1>
<p>Para começar a trabalhar com o NestJS é bem simples. Basta você clonar o repositório de um projeto em branco no Github com o modelo que deseja trabalhar (TypeScript ou JavaScript).</p>
<p>Lembrando que para trabalhar com o NestJS você precisa de possuir instalado em seu ambiente o NodeJS.</p>
<p><strong>Criando um novo projeto usando JavaScript puro com o GIT:</strong></p>
<pre class="brush: plain; title: ; notranslate">
$ git clone https://github.com/nestjs/javascript-starter.git meu-primeiro-projeto
$ cd meu-primeiro-projeto
$ npm install
$ npm run start
</pre>
<p><strong>Criando um novo projeto usando TypeScript com o GIT:</strong></p>
<pre class="brush: plain; title: ; notranslate">
$ git clone https://github.com/nestjs/typescript-starter.git meu-primeiro-projeto
$ cd meu-primeiro-projeto
$ npm install
$ npm run start
</pre>
<p><strong>Criando um projeto do zero usando NPM:</strong></p>
<pre class="brush: plain; title: ; notranslate">

$ npm i --save @nestjs/core @nestjs/common @nestjs/microservices @nestjs/websockets @nestjs/testing reflect-metadata rxjs

</pre>
<p>&nbsp;</p>
<h1>Estrutura</h1>
<p>[wp_ad_camp_2]</p>
<p>O NestJS conta com uma estrutura bem conhecida pelos desenvolvedores Java/.NET  ele tem implementado de forma bem simples recursos que são muito utilizados.</p>
<p>Segue abaixo a lista de recursos que o NestJS propõe em sua estrutura atual.</p>
<h2>Controllers</h2>
<p><span id="result_box" class="" lang="pt" tabindex="-1">A camada de Controllers é responsável por manipular solicitações recebidas e retornar uma resposta ao cliente, e todo a parte de &#8220;Rota&#8221; já é feito nessa mesma camada.</span></p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-300 size-full" src="https://www.hiago.me/wp-content/uploads/2018/05/Controllers_1.png" alt="Imagem mostrando os controllers do NestJS" width="970" height="420" srcset="https://www.hiago.me/wp-content/uploads/2018/05/Controllers_1.png 970w, https://www.hiago.me/wp-content/uploads/2018/05/Controllers_1-300x130.png 300w, https://www.hiago.me/wp-content/uploads/2018/05/Controllers_1-768x333.png 768w" sizes="(max-width: 970px) 100vw, 970px" /></p>
<h2>Providers</h2>
<p><span id="result_box" class="" lang="pt" tabindex="-1">Quase tudo pode ser considerado como um provedor &#8211; provider – service, repository, factory, helper e assim por diante. Todos eles podem injetar dependências através de construtor (Dependency Injection), ou seja, eles podem criar vários relacionamentos entre si. Mas, na verdade, um provedor nada mais é do que apenas uma classe simples anotada com um decorator @Injectable().</span><span id="result_box" class="" lang="pt" tabindex="-1"><span class=""><br />
</span></span></p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-301 size-full" src="https://www.hiago.me/wp-content/uploads/2018/05/Providers_1.png" alt="Imagem mostrando os providers do NestJS" width="970" height="518" srcset="https://www.hiago.me/wp-content/uploads/2018/05/Providers_1.png 970w, https://www.hiago.me/wp-content/uploads/2018/05/Providers_1-300x160.png 300w, https://www.hiago.me/wp-content/uploads/2018/05/Providers_1-768x410.png 768w" sizes="(max-width: 970px) 100vw, 970px" /></p>
<h2>Modules</h2>
<div id="gt-res-content">
<div id="gt-res-dir-ctr" class="trans-verified-button-small" dir="ltr"><span id="result_box" class="" lang="pt" tabindex="-1"><span class="">Um módulo é uma classe que faz uso de um decorator @Module().</span> <span class="">O decorator @Module() fornece metadados, que o Nest usa para organizar a estrutura da aplicação.</span></span></div>
<div dir="ltr"><img loading="lazy" decoding="async" class="alignnone wp-image-302 size-full" src="https://www.hiago.me/wp-content/uploads/2018/05/Modules_1.png" alt="Imagem mostrando os modules do NestJS" width="970" height="526" srcset="https://www.hiago.me/wp-content/uploads/2018/05/Modules_1.png 970w, https://www.hiago.me/wp-content/uploads/2018/05/Modules_1-300x163.png 300w, https://www.hiago.me/wp-content/uploads/2018/05/Modules_1-768x416.png 768w" sizes="(max-width: 970px) 100vw, 970px" /></div>
<h2 dir="ltr">Middlewares</h2>
<p><span id="result_box" class="" lang="pt" tabindex="-1">O middleware é uma função que é chamada antes do manipulador de rota. As funções de middleware têm acesso aos objetos de solicitação e resposta, e a próxima função de middleware no ciclo de solicitação-resposta do aplicativo. <span class="">A próxima função de middleware é geralmente denotada por uma variável denominada next.</span></span></p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-303 size-full" src="https://www.hiago.me/wp-content/uploads/2018/05/Middlewares_1.png" alt="Imagem mostrando os middlewares do NestJS" width="970" height="220" srcset="https://www.hiago.me/wp-content/uploads/2018/05/Middlewares_1.png 970w, https://www.hiago.me/wp-content/uploads/2018/05/Middlewares_1-300x68.png 300w, https://www.hiago.me/wp-content/uploads/2018/05/Middlewares_1-768x174.png 768w" sizes="(max-width: 970px) 100vw, 970px" /></p>
<h2>Exception filters</h2>
<p><span id="result_box" class="" lang="pt" tabindex="-1">A camada de exceções interna é responsável por manipular todas as exceções lançadas em todo o seu aplicativo. Quando uma exceção não tratada é detectada, o usuário final receberá uma resposta adequada.</span></p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-304 size-full" src="https://www.hiago.me/wp-content/uploads/2018/05/Filter_1.png" alt="Imagem mostrando os filters do NestJS" width="833" height="474" srcset="https://www.hiago.me/wp-content/uploads/2018/05/Filter_1.png 833w, https://www.hiago.me/wp-content/uploads/2018/05/Filter_1-300x171.png 300w, https://www.hiago.me/wp-content/uploads/2018/05/Filter_1-768x437.png 768w" sizes="(max-width: 833px) 100vw, 833px" /></p>
<h2>Pipes</h2>
<p><span id="result_box" class="" lang="pt" tabindex="-1">Um pipe é uma classe anotada com o decorator @Injectable(). O pipe deve implementar a interface PipeTransform.</span></p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-305 size-full" src="https://www.hiago.me/wp-content/uploads/2018/05/Pipe_1.png" alt="Imagem mostrando os pipes do NestJS" width="833" height="474" srcset="https://www.hiago.me/wp-content/uploads/2018/05/Pipe_1.png 833w, https://www.hiago.me/wp-content/uploads/2018/05/Pipe_1-300x171.png 300w, https://www.hiago.me/wp-content/uploads/2018/05/Pipe_1-768x437.png 768w" sizes="(max-width: 833px) 100vw, 833px" /></p>
<h2>Guards</h2>
<p><span id="result_box" class="" lang="pt" tabindex="-1"><span class="">Um guarda é uma classe anotada com o decorator @Injectable().</span> O guarda deve implementar a interface do CanActivate.</span></p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-306 size-full" src="https://www.hiago.me/wp-content/uploads/2018/05/Guards_1.png" alt="Imagem mostrando os guards do NestJS" width="906" height="269" srcset="https://www.hiago.me/wp-content/uploads/2018/05/Guards_1.png 906w, https://www.hiago.me/wp-content/uploads/2018/05/Guards_1-300x89.png 300w, https://www.hiago.me/wp-content/uploads/2018/05/Guards_1-768x228.png 768w" sizes="(max-width: 906px) 100vw, 906px" /></p>
<h2>Interceptors</h2>
<p><span id="result_box" class="" lang="pt" tabindex="-1"><span class="">Um interceptor é uma classe anotada com o decorator @Injectable().</span> <span class="">O interceptor deve implementar a interface NestInterceptor.</span></span></p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-307 size-full" src="https://www.hiago.me/wp-content/uploads/2018/05/Interceptors_1.png" alt="Imagem mostrando os interceptors do NestJS" width="1800" height="850" srcset="https://www.hiago.me/wp-content/uploads/2018/05/Interceptors_1.png 1800w, https://www.hiago.me/wp-content/uploads/2018/05/Interceptors_1-300x142.png 300w, https://www.hiago.me/wp-content/uploads/2018/05/Interceptors_1-768x363.png 768w, https://www.hiago.me/wp-content/uploads/2018/05/Interceptors_1-1024x484.png 1024w, https://www.hiago.me/wp-content/uploads/2018/05/Interceptors_1-520x245.png 520w, https://www.hiago.me/wp-content/uploads/2018/05/Interceptors_1-720x340.png 720w" sizes="(max-width: 1800px) 100vw, 1800px" /></p>
<h1>Conclusão</h1>
<p>[wp_ad_camp_1]</p>
<p>O NestJS é uma ótima alternativa de manter seu projeto organizado e escalável. Além de todos os seus recursos conforme apresentado acima ele também oferece suporte a diversos tipos de implementações não citadas como WebSockets, GraphQL e por ai vai.</p>
<p>Vamos lá, não vamos perder tempo! Entre agora na documentação oficial do Nest e deixe sua imaginação trabalhar.</p>
<p><a href="https://www.hiago.me/category/node-js/">+ posts sobre NodeJS</a></p>
</div>
<p>The post <a href="https://www.hiago.me/2018/05/13/nestjs-uma-estrutura-nodejs-linda-e-trabalhada/">NestJS: Uma estrutura NodeJS linda e trabalhada</a> appeared first on <a href="https://www.hiago.me">Hiago Silva Souza</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.hiago.me/2018/05/13/nestjs-uma-estrutura-nodejs-linda-e-trabalhada/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">297</post-id>	</item>
	</channel>
</rss>
