{"id":11386,"date":"2020-12-01T16:25:43","date_gmt":"2020-12-01T19:25:43","guid":{"rendered":"https:\/\/geekblogti.wpengine.com\/?p=11386"},"modified":"2024-09-24T18:27:53","modified_gmt":"2024-09-24T21:27:53","slug":"typescript-tutorial","status":"publish","type":"post","link":"https:\/\/www.geekhunter.com/pt/blog\/typescript-tutorial\/","title":{"rendered":"TypeScript tutorial: Valida\u00e7\u00e3o do processo de linting no pr\u00e9-commit"},"content":{"rendered":"\r\n<p class=\"wp-block-paragraph\">Ap\u00f3s realizarmos a implanta\u00e7\u00e3o de <em>linting<\/em>, em nosso \u00faltimo artigo, agora iremos trabalhar na valida\u00e7\u00e3o desta solu\u00e7\u00e3o antes de realizarmos a consolida\u00e7\u00e3o do <em>commit<\/em> em nosso reposit\u00f3rio com este tutorial de TypeScript.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Confira tamb\u00e9m as outras postagens desta s\u00e9rie de artigos de boas pr\u00e1ticas em TypeScript:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Parte 1: <a href=\"https:\/\/geekblogti.wpengine.com\/visual-studio-code-como-editor-do-git\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Visual Studio Code como editor de texto padr\u00e3o do Git<\/strong><\/a><\/li>\r\n<li><span style=\"font-size: 1rem; letter-spacing: 0px;\">Parte 2: <\/span><a style=\"font-size: 1rem; letter-spacing: 0px;\" href=\"https:\/\/geekblogti.wpengine.com\/comandos-git-mais-utilizados\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Comandos Git mais utilizados e como configurar<\/strong><\/a><\/li>\r\n<li>Parte 3: <a href=\"https:\/\/geekblogti.wpengine.com\/o-que-e-commit-e-como-usar-commits-semanticos\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>O que \u00e9 Commit e como usar Commits Sem\u00e2nticos<\/strong><\/a><\/li>\r\n<li>Parte 4:<strong> <a href=\"https:\/\/geekblogti.wpengine.com\/javascript-standard-style\/\" target=\"_blank\" rel=\"noreferrer noopener\">JavaScript Standard Style: melhores pr\u00e1ticas em JS<\/a><\/strong><\/li>\r\n<li>Parte 5: <a href=\"https:\/\/geekblogti.wpengine.com\/eslint-typescript-tutorial\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Linting em TypeScript com ESLint<\/strong><\/a><\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\" id=\"h-typescript-tutorial-parte-6\">TypeScript tutorial parte 6<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">O que ir\u00e1 garantir que c\u00f3digo, que n\u00e3o esteja coerente com as diretrizes definidas, seja persistido em nosso projeto.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Para isso, iremos utilizar o recurso de <strong><em>git hooks<\/em><\/strong>, o qual nos permite a execu\u00e7\u00e3o de algumas tarefas durante o processo de <em>wokflow<\/em> em eventos do Git.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Mas, o que seriam Git Hooks? S\u00e3o scripts que o Git executa quando uma determinada a\u00e7\u00e3o ocorre no reposit\u00f3rio. Eles permitem que voc\u00ea automatize tarefas personaliz\u00e1veis de acordo com o seu <em>workflow<\/em> de desenvolvimento.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Mas, se <em>hooks<\/em> \u00e9 um recurso nativo do Git, por que utilizaremos uma biblioteca para o processo? Por um simples motivo! As configura\u00e7\u00f5es dos <em>git hooks<\/em> ficam dentro do diret\u00f3rio <strong>.git\/<\/strong> do projeto.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Esse diret\u00f3rio n\u00e3o \u00e9 versionado, o que impedi que os <em>hooks<\/em> sejam compartilhados por um time de desenvolvedores.<\/p>\r\n\r\n\r\n\r\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\r\n<p>Encontre <a href=\"https:\/\/bit.ly\/3g0P41A\" target=\"_blank\" rel=\"noreferrer noopener\">vagas para programador TypeScript<\/a><\/p>\r\n<\/blockquote>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\" id=\"h-a-biblioteca-husky\">A biblioteca Husky<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Para facilitar esse processo utilizaremos o <strong>Husky<\/strong>, que \u00e9 um pacote NPM que exp\u00f5e uma API para utilizar os <em>hooks<\/em> do git atrav\u00e9s de campos de configura\u00e7\u00e3o no <em>package.json ou um arquivo espec\u00edfico de configura\u00e7\u00e3o.<\/em><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">E assim, permitindo o versionamento dos git hooks utilizados no projeto. Husky n\u00e3o \u00e9 o \u00fanico projeto que implementa essa funcionalidade, existem outros, como o <strong>Ghooks<\/strong>, mas para esse projeto optamos pelo Husky que supre muito bem nossas necessidades.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"805\" height=\"787\" class=\"wp-image-11392\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2020\/12\/typescript-tutorial.png\" alt=\"typescript-tutorial\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/typescript-tutorial.png 805w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/typescript-tutorial-150x147.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/typescript-tutorial-100x98.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/typescript-tutorial-600x587.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/typescript-tutorial-450x440.png 450w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/typescript-tutorial-552x540.png 552w\" sizes=\"(max-width: 805px) 100vw, 805px\" \/><\/figure>\r\n\r\n\r\n\r\n<p class=\"has-text-align-center wp-block-paragraph\"><a href=\"https:\/\/www.npmjs.com\/package\/husky\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">https:\/\/www.npmjs.com\/package\/husky<\/a><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">No reposit\u00f3rio do projeto no GitHub, podemos visualizar as op\u00e7\u00f5es de instala\u00e7\u00e3o e configura\u00e7\u00e3o da biblioteca.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Entretanto, diferente do demonstrado no exemplo acima, para melhor organiza\u00e7\u00e3o e estrutura do c\u00f3digo, n\u00e3o realizaremos a configura\u00e7\u00e3o do husky no arquivo package.json, mas criaremos um arquivo espec\u00edfico para os par\u00e2metros que queremos definir para nosso processo de <em>git hooks<\/em>.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\" id=\"h-instala-o-da-biblioteca-husky\">Instala\u00e7\u00e3o da biblioteca Husky<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Para continuar com o nosso tutorial de TypeScript, vamos instalar a j\u00e1 mencionada biblioteca Husky seguindo o mesmo padr\u00e3o\u00a0<strong>npm<\/strong>, utilizando a flag -D para que seja instalada somente para nosso ambiente de desenvolvimento, e n\u00e3o sendo replicada no <em>build<\/em> para o ambiente de produ\u00e7\u00e3o.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>npm install -D husky<\/code><\/pre>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"774\" height=\"506\" class=\"wp-image-11394\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2020\/12\/image4.png\" alt=\"install-husky-typescript\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/image4.png 774w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/image4-150x98.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/image4-100x65.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/image4-600x392.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/image4-450x294.png 450w\" sizes=\"(max-width: 774px) 100vw, 774px\" \/><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Ap\u00f3s a instala\u00e7\u00e3o, a ferramenta nos permitir\u00e1 definir um processo de pr\u00e9-commit, interrompendo o fluxo do evento, possibilitando executarmos scripts antes de persistir as informa\u00e7\u00f5es do <em>commit<\/em>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">No caso, poder\u00edamos executar o script de <em>start<\/em> do <strong>ESLint<\/strong>, que configuramos no artigo anterior, o que nos garantiria a valida\u00e7\u00e3o de nosso c\u00f3digo, antes dos arquivos serem <em>commitados<\/em>, conforme as diretrizes do <em>guide style<\/em> <strong>JS Standard,<\/strong> o que j\u00e1 atenderia nossa necessidade principal.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Contudo, isso nos ocasiona outro problema, se configurarmos o EsLint para ser executado sempre que realizarmos um processo de <em>commit<\/em>, ele ir\u00e1 realizar uma varredura por todos os arquivos do projeto.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Inicialmente isso n\u00e3o ocasionaria muito impacto, mas, conforme nosso c\u00f3digo de desenvolvimento evolui o processo de <em>commit,<\/em> proporcionalmente, tornaria-se mais lento e oneroso em termos de produtividade.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\" id=\"h-a-biblioteca-lint-staged\">A biblioteca lint-staged<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Para continuar o tutorial de TypeScript com sucesso e resolver a situa\u00e7\u00e3o podemos utilizar outra biblioteca em conjunto com o <strong>Husky<\/strong>, se trata do <strong>lint-staged<\/strong>. Essas ferramentas nos permitem definirmos os diret\u00f3rios os quais estaremos realizando o processo de <em>lint<\/em>, a cada <em>commit<\/em>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">E mais do que isso, podemos definir que apenas ser\u00e3o analisados os arquivos que estejam na\u00a0<strong><em>stage area<\/em><\/strong>\u00a0do Git. Ou seja, somente arquivos adicionados ou alterados desde o \u00faltimo\u00a0<em>commit ser\u00e3o analisados pelo processo de linting.<\/em>\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Pois, os arquivos commitados anteriormente j\u00e1 passaram por essa valida\u00e7\u00e3o garantido a consist\u00eancia na estrutura do seu c\u00f3digo.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Isso ir\u00e1 nos assegurar que n\u00e3o teremos perda de performance significativa, mas tamb\u00e9m mantendo a confiabilidade que as informa\u00e7\u00f5es persistidas no reposit\u00f3rio est\u00e3o condizente com as diretrizes adotadas pelo pattern.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"635\" height=\"216\" class=\"wp-image-11397\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2020\/12\/clean-node-typescript.png\" alt=\"clean-node-typescript\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/clean-node-typescript.png 635w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/clean-node-typescript-150x51.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/clean-node-typescript-100x34.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/clean-node-typescript-600x204.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/clean-node-typescript-450x153.png 450w\" sizes=\"(max-width: 635px) 100vw, 635px\" \/><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Para utilizarmos a biblioteca <em>lint-staged<\/em>, adotamos o mesmo processo habitual de instala\u00e7\u00e3o atrav\u00e9s do <strong>npm<\/strong>, apenas como depend\u00eancia de desenvolvimento.\u00a0<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>npm install -D lint-staged<\/code><\/pre>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"447\" height=\"213\" class=\"wp-image-11400\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2020\/12\/husky-staging.png\" alt=\"husky-staging\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/husky-staging.png 447w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/husky-staging-150x71.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/husky-staging-100x48.png 100w\" sizes=\"(max-width: 447px) 100vw, 447px\" \/><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Ap\u00f3s a instala\u00e7\u00e3o das depend\u00eancias, podemos realizar as configura\u00e7\u00f5es necess\u00e1rias, para implantarmos a solu\u00e7\u00e3o que pretendemos. Na raiz do projeto criaremos dois arquivos: <strong>huskyrc.json<\/strong> e <strong>lintsategdrc.json<\/strong>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">No primeiro, iremos configurar os <em>hooks<\/em> que iremos utilizar e em quais m\u00e9todos do Git eles ser\u00e3o executados.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"439\" height=\"215\" class=\"wp-image-11401\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2020\/12\/lintsategdrc.png\" alt=\"lintsategdrc\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/lintsategdrc.png 439w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/lintsategdrc-150x73.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/lintsategdrc-100x49.png 100w\" sizes=\"(max-width: 439px) 100vw, 439px\" \/><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">No arquivo <strong>lintstagedrc.json<\/strong>, definimos os tipos de arquivos que ser\u00e3o verificados e em quais diret\u00f3rios eles se encontram.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">No arquivo apresentado como exemplo neste tutorial de TypeScript, na imagem ao lado, definimos que a verifica\u00e7\u00e3o ser\u00e1 realizada em todos os arquivos TypeScript <strong>(*.ts),<\/strong> que se encontram no diret\u00f3rio\u00a0<strong>(src)<\/strong>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Este diret\u00f3rio, deve ser criado na raiz de nosso projeto, e onde manteremos todo nosso c\u00f3digo de desenvolvimento TypeScript. Em conjunto passamos a <strong><em>flag<\/em> &#8211;fix<\/strong>, para que o EsLint tente corrigir automaticamente as incoer\u00eancias encontradas em nosso c\u00f3digo.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Como o<strong> lint-staged<\/strong> vasculha a<em>staged area, <\/em>apenas os arquivos ainda n\u00e3o <em>commitados<\/em> ser\u00e3o verificados. Isso ir\u00e1 garantir a valida\u00e7\u00e3o da estrutura de codifica\u00e7\u00e3o do nosso projeto.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Futuramente quando adotarmos nossos testes unit\u00e1rios (TDD), tamb\u00e9m poderemos configurar para estes testes serem executados em nosso fluxo de <em>commit<\/em>, e iremos configurar nestes dois arquivos, a chamada de execu\u00e7\u00e3o.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Pronto, com estas configura\u00e7\u00f5es garantimos a verifica\u00e7\u00e3o de conformidade do <em>pattern<\/em> de codifica\u00e7\u00e3o no processo de pr\u00e9 <em>commit<\/em>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Caso exista alguma diverg\u00eancia em nosso c\u00f3digo, em rela\u00e7\u00e3o as normativas determinadas pelo <strong>JavaScript Standard Style<\/strong>, e que o ESLint n\u00e3o consiga corrigir atrav\u00e9s do comando <strong>&#8211;fix<\/strong>, o workflow do <em>commit<\/em> ser\u00e1 abortado e apresentado as diverg\u00eancias encontradas. Impedindo de consolidarmos c\u00f3digo sujo ou n\u00e3o estruturado para o reposit\u00f3rio Git.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Para verificarmos a execu\u00e7\u00e3o do git hook de pr\u00e9-commit, que acabamos de configurar, vamos realizar o <em>commit<\/em> dessa nova <em>feature que implantamos.<\/em><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Lembrando que nesse tutorial de TypeScript que estamos fazendo, optamos pela utiliza\u00e7\u00e3o do conceito de <strong>atomic commits<\/strong> (abordado no artigo sobre Commits Sem\u00e2nticos) que devem ser \u00fanicos e que implantam apenas um recurso, corre\u00e7\u00e3o ou atualiza\u00e7\u00e3o.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Neste caso realizaremos um <em>commit<\/em> do tipo <strong>chore<\/strong> (que adiciona um biblioteca ou ferramenta que n\u00e3o ser\u00e1 replicada pelo <em>build<\/em> para produ\u00e7\u00e3o).<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"646\" height=\"251\" class=\"wp-image-11402\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2020\/12\/atomic-commits.png\" alt=\"Atomic-commits\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/atomic-commits.png 646w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/atomic-commits-150x58.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/atomic-commits-100x39.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/atomic-commits-600x233.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/atomic-commits-450x175.png 450w\" sizes=\"(max-width: 646px) 100vw, 646px\" \/><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Como ilustra\u00e7\u00e3o, veja no destaque da imagem acima, que o husky j\u00e1 foi executado no processo de pre-commit, contudo como n\u00e3o possu\u00edamos arquivos do tipo TypeScript em nossa <em>staged area<\/em>, o processo de <em>lint<\/em> n\u00e3o foi executado, dando continuidade no fluxo do <em>commit<\/em>. O que nos garante que nossa implanta\u00e7\u00e3o j\u00e1 se encontra funcional.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Agora que configuramos a tr\u00edade de <strong>ESLint<\/strong>, <strong>Husky<\/strong> e <strong>lint-staged<\/strong>, a equipe de desenvolvimento pode aproveitar os benef\u00edcios do novo fluxo de trabalho e incentivar algumas discuss\u00f5es sobre quais novas regras se pode adicionar ao processo de <em>linting<\/em> para incentivar as melhores pr\u00e1ticas.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">O c\u00f3digo fonte ser\u00e1 persistido limpo e estruturado, o que tornar\u00e1 a vida um pouco mais f\u00e1cil para todos os envolvidos no projeto. Nos pr\u00f3ximos artigos quero falar sobre alguns patterns como: <strong>Composite<\/strong>, <strong>Factory<\/strong>, <strong>Builder<\/strong> e <strong>Decorator<\/strong>. At\u00e9 a pr\u00f3xima!!!<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Gostou da s\u00e9rie de artigos desse grande tutorial de TypeScript? Quero tamb\u00e9m lhe agradecer pelo seu interesse e incentivo! Ajude a fomentar discuss\u00f5es inteligentes, com coment\u00e1rios, cr\u00edticas (porque n\u00e3o) e sugest\u00f5es.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">N\u00e3o esque\u00e7a tamb\u00e9m de deixar seus coment\u00e1rios no post e compartilhar com seus amigos para ajudar esse colega a divulgar seu trabalho.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/bit.ly\/36yjO78\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" width=\"720\" height=\"200\" class=\"wp-image-11312\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2020\/11\/Template-CTA-Blog-@2x-7.png\" alt=\"\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/11\/Template-CTA-Blog-@2x-7.png 720w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/11\/Template-CTA-Blog-@2x-7-150x42.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/11\/Template-CTA-Blog-@2x-7-100x28.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/11\/Template-CTA-Blog-@2x-7-600x167.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/11\/Template-CTA-Blog-@2x-7-450x125.png 450w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/figure>\r\n","protected":false},"excerpt":{"rendered":"<p>Ap\u00f3s realizarmos a implanta\u00e7\u00e3o de linting, em nosso \u00faltimo artigo, agora iremos trabalhar na valida\u00e7\u00e3o desta solu\u00e7\u00e3o antes de realizarmos a consolida\u00e7\u00e3o do commit em nosso reposit\u00f3rio com este tutorial de TypeScript. Confira tamb\u00e9m as outras postagens desta s\u00e9rie de artigos de boas pr\u00e1ticas em TypeScript: Parte 1: Visual Studio Code como editor de texto [&hellip;]<\/p>\n","protected":false},"author":167,"featured_media":11410,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[18],"tags":[],"class_list":["post-11386","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvimiento-de-software"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.3 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>TypeScript: Valida\u00e7\u00e3o do processo de linting no pr\u00e9-commit<\/title>\n<meta name=\"description\" content=\"Confira este tutorial de TypeScript e saiba como fazer a valida\u00e7\u00e3o do processo de linting no pr\u00e9-commit. Aprenda agora!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-tutorial\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TypeScript tutorial: Valida\u00e7\u00e3o do processo de linting no pr\u00e9-commit\" \/>\n<meta property=\"og:description\" content=\"Ap\u00f3s realizarmos a implanta\u00e7\u00e3o de linting, em nosso \u00faltimo artigo, agora iremos trabalhar na valida\u00e7\u00e3o desta solu\u00e7\u00e3o antes de realizarmos a consolida\u00e7\u00e3o\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-tutorial\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Geekhunter\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/geekhunterbr\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-12-01T19:25:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-24T21:27:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/typescript-tutorial.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Geekhunter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@geekhunterbr\" \/>\n<meta name=\"twitter:site\" content=\"@geekhunterbr\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Geekhunter\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-tutorial\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-tutorial\\\/\"},\"author\":{\"name\":\"Geekhunter\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/person\\\/9f62b173345139f7bbdaf55312c3d400\"},\"headline\":\"TypeScript tutorial: Valida\u00e7\u00e3o do processo de linting no pr\u00e9-commit\",\"datePublished\":\"2020-12-01T19:25:43+00:00\",\"dateModified\":\"2024-09-24T21:27:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-tutorial\\\/\"},\"wordCount\":1366,\"publisher\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-tutorial\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/typescript-tutorial.jpeg\",\"articleSection\":[\"Desenvolvimiento de software\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-tutorial\\\/\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-tutorial\\\/\",\"name\":\"TypeScript: Valida\u00e7\u00e3o do processo de linting no pr\u00e9-commit\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-tutorial\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-tutorial\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/typescript-tutorial.jpeg\",\"datePublished\":\"2020-12-01T19:25:43+00:00\",\"dateModified\":\"2024-09-24T21:27:53+00:00\",\"description\":\"Confira este tutorial de TypeScript e saiba como fazer a valida\u00e7\u00e3o do processo de linting no pr\u00e9-commit. Aprenda agora!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-tutorial\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/typescript-tutorial\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-tutorial\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/typescript-tutorial.jpeg\",\"contentUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/typescript-tutorial.jpeg\",\"width\":1200,\"height\":628,\"caption\":\"typescript-tutorial-linting\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/typescript-tutorial\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mundo TI\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/category\\\/mundo-ti\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Desenvolvimiento de software\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/category\\\/mundo-ti\\\/desenvolvimiento-de-software\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"TypeScript tutorial: Valida\u00e7\u00e3o do processo de linting no pr\u00e9-commit\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/\",\"name\":\"Blog de TI\",\"description\":\"Dicas para o RH e profissionais da \u00e1rea TI\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\",\"name\":\"GeekHunter\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/icon-1.png\",\"contentUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/icon-1.png\",\"width\":300,\"height\":300,\"caption\":\"GeekHunter\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/geekhunterbr\\\/\",\"https:\\\/\\\/x.com\\\/geekhunterbr\",\"https:\\\/\\\/www.instagram.com\\\/geekhunterbr\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/geekhunter-brasil\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@GeekHunterOfficial\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/person\\\/9f62b173345139f7bbdaf55312c3d400\",\"name\":\"Geekhunter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"caption\":\"Geekhunter\"},\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/author\\\/matias\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"TypeScript: Valida\u00e7\u00e3o do processo de linting no pr\u00e9-commit","description":"Confira este tutorial de TypeScript e saiba como fazer a valida\u00e7\u00e3o do processo de linting no pr\u00e9-commit. Aprenda agora!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-tutorial\/","og_locale":"pt_BR","og_type":"article","og_title":"TypeScript tutorial: Valida\u00e7\u00e3o do processo de linting no pr\u00e9-commit","og_description":"Ap\u00f3s realizarmos a implanta\u00e7\u00e3o de linting, em nosso \u00faltimo artigo, agora iremos trabalhar na valida\u00e7\u00e3o desta solu\u00e7\u00e3o antes de realizarmos a consolida\u00e7\u00e3o","og_url":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-tutorial\/","og_site_name":"Blog Geekhunter","article_publisher":"https:\/\/www.facebook.com\/geekhunterbr\/","article_published_time":"2020-12-01T19:25:43+00:00","article_modified_time":"2024-09-24T21:27:53+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/typescript-tutorial.jpeg","type":"image\/jpeg"}],"author":"Geekhunter","twitter_card":"summary_large_image","twitter_creator":"@geekhunterbr","twitter_site":"@geekhunterbr","twitter_misc":{"Escrito por":"Geekhunter","Est. tempo de leitura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-tutorial\/#article","isPartOf":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-tutorial\/"},"author":{"name":"Geekhunter","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/person\/9f62b173345139f7bbdaf55312c3d400"},"headline":"TypeScript tutorial: Valida\u00e7\u00e3o do processo de linting no pr\u00e9-commit","datePublished":"2020-12-01T19:25:43+00:00","dateModified":"2024-09-24T21:27:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-tutorial\/"},"wordCount":1366,"publisher":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/typescript-tutorial.jpeg","articleSection":["Desenvolvimiento de software"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-tutorial\/","url":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-tutorial\/","name":"TypeScript: Valida\u00e7\u00e3o do processo de linting no pr\u00e9-commit","isPartOf":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-tutorial\/#primaryimage"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/typescript-tutorial.jpeg","datePublished":"2020-12-01T19:25:43+00:00","dateModified":"2024-09-24T21:27:53+00:00","description":"Confira este tutorial de TypeScript e saiba como fazer a valida\u00e7\u00e3o do processo de linting no pr\u00e9-commit. Aprenda agora!","breadcrumb":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-tutorial\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.geekhunter.com/pt/blog\/typescript-tutorial\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-tutorial\/#primaryimage","url":"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2020\/12\/typescript-tutorial.jpeg","contentUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/12\/typescript-tutorial.jpeg","width":1200,"height":628,"caption":"typescript-tutorial-linting"},{"@type":"BreadcrumbList","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/typescript-tutorial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.geekhunter.com/pt/blog\/"},{"@type":"ListItem","position":2,"name":"Mundo TI","item":"https:\/\/www.geekhunter.com/pt/blog\/category\/mundo-ti\/"},{"@type":"ListItem","position":3,"name":"Desenvolvimiento de software","item":"https:\/\/www.geekhunter.com/pt/blog\/category\/mundo-ti\/desenvolvimiento-de-software\/"},{"@type":"ListItem","position":4,"name":"TypeScript tutorial: Valida\u00e7\u00e3o do processo de linting no pr\u00e9-commit"}]},{"@type":"WebSite","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#website","url":"https:\/\/www.geekhunter.com\/pt\/blog\/","name":"Blog de TI","description":"Dicas para o RH e profissionais da \u00e1rea TI","publisher":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.geekhunter.com/pt/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization","name":"GeekHunter","url":"https:\/\/www.geekhunter.com\/pt\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2024\/10\/icon-1.png","contentUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2024\/10\/icon-1.png","width":300,"height":300,"caption":"GeekHunter"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/geekhunterbr\/","https:\/\/x.com\/geekhunterbr","https:\/\/www.instagram.com\/geekhunterbr\/","https:\/\/www.linkedin.com\/company\/geekhunter-brasil\/","https:\/\/www.youtube.com\/@GeekHunterOfficial"]},{"@type":"Person","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/person\/9f62b173345139f7bbdaf55312c3d400","name":"Geekhunter","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","caption":"Geekhunter"},"url":"https:\/\/www.geekhunter.com\/pt\/blog\/author\/matias\/"}]}},"_links":{"self":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts\/11386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/users\/167"}],"replies":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/comments?post=11386"}],"version-history":[{"count":0,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts\/11386\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/media\/11410"}],"wp:attachment":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/media?parent=11386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/categories?post=11386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/tags?post=11386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}