Um momento
Aula 28
Cursos / Aprenda TypeScript - Tutorial Básico Vindo do JavaScript
Como Definir um namespace para Isolar o Escopo de Código

Summary

Resumo da Aula de TypeScript

Nesta aula de TypeScript, o apresentador discute como compilar um código usando o comando TSC (TypeScript Compiler) e encontra um erro relacionado a conflitos de nomes entre arquivos.

Pontos Principais

  • O erro ocorreu devido a um conflito de nomes, onde a interface Indivíduo na classe estava interferindo com outra definição do mesmo nome em outro arquivo.
  • Para resolver este problema, o conceito de name spaces é introduzido. Name spaces permitem agrupar o código de forma que nomes iguais não causem conflitos.
  • A solução apresentada consiste em encapsular a classe Indivíduo dentro de um name space chamado Sobreclasses, isolando assim seu escopo.
  • Após a implementação do name space, o código é recompilado com o comando TSC e a compilação ocorre sem problemas.
  • O apresentador também faz uma comparação entre a transpiração do código no seu ambiente local, que está configurado para ES5, e a versão que aparece no Playground do navegador, que utiliza ES6.

Conclusão

O uso de name spaces facilita a organização do código e evita conflitos de nomes entre diferentes arquivos, promovendo uma melhor estruturação em projetos TypeScript.

Próximos Passos

  • Continuar aprendendo sobre name spaces e outras funcionalidades do TypeScript nas próximas aulas.

Video Transcript

Olá pessoal estamos de volta, essa aula de TypeScript. Vamos continuar aqui, antes de tudo eu queria só tentar compilar esse código que já temos usando o TSC, aquele comando né, TSC TypeScript Compilador. Vou aqui no terminal aqui, eu vou digitar TSC, o que vai acontecer. Usando as configurações do TSC.conf.json, que está aqui na pasta-raiz, ele vai no src, vai compilar tudo para pasta-dist. Mas vai dar um problema. O que é que aconteceu? O problema foi em outro arquivo na verdade. Src-propriedades de um objeto em função do .ts, l.26, col.14, está dizendo o argumento do tipo, não sei o que, não é atribuído ao tipo indivíduo. Vamos lá naquele arquivo. Propriedades de um objeto, olha aqui, qual era? Alguém? Certo. Por que será que isso deu problema? Note que interface de vida aqui é o mesmo nome da classe que eu fiz em outro arquivo, em dv.tests, mesmo. Então, o que acontece aqui é que ele está interferindo com os outros arquivos. Então, os arquivos estão sendo compilados tudo assim, juntos, e aí se você tiver nome repetido, ele vai dar conflito. A gente já viu isso anteriormente, talvez no começo do curso. Então, para poder consertar isso, tem uma opção. Essa opção é usar o name spaces. Então, tem esse conceito de name space, que é uma palavra-chave, e a gente pode usar para poder isolar o nosso código em um certo agrupamento que não vai interferir com as outras coisas, nem que as entidades tenham o mesmo nome. É o conceito de name space. Então, para poder consertar esse problema aqui do compilador, eu vou pegar isso tudo aqui e vou por dentro de um name space. Vou chamar o name space de sobreclasses, abre as chaves, aí eu pego tudo aqui, essa classe indivídua e a coisa que a gente está fazendo, eu vou mover para dentro do name space. Dessa maneira, o indivíduo e tudo que estiver dentro desse corpo do name space para se associar ao name space sobreclasses, e nem que eu tenha um nome indivíduo que seja o mesmo nome de outra coisa que tenha definido no escopo global, não vai interferir por quê. O que se eu fizer se referir à classe indivíduo, vai ter que ir através do name space sobreclasses. Então, do outro arquivo aqui, por exemplo, se você quiser acessar a classe indivíduo, você teria que falar sobreclasses.indivíduo para poder ter acesso a essa classe indivídua, que está dentro do name space sobreclasses. Dessa maneira, ele desambigua o mesmo nome, em vez de aplicar tudo para o escopo global, está no escopo de sobreclasses, o name space. Com isso, vou tentar novamente opilar a TSC no terminal aqui, antes que não esteve mais problema. TSC funcionou direitinho o seu problema, só pôs o negócio dentro do name space. A dessa que apareceu aqui, vamos ver que está dentro do indivíduo com o JS, desses negócios aqui. Estou dentro do name space, que eles fizeram a transpilação para S5 até. Note que, só um detalhe aqui, quando eu tinha usado o Playground no navegador anteriormente, o lado direito da tela que tinha o código transpilado, já estava usando a versão S6 para cima, por isso que é diferente do meu copilador local. Na minha máquina aqui no computador local, está transpilando tudo para S5, nem S6. Por isso que não aparece a palavra clasa e está aparecendo as coisas meio difíceis de ler, que ainda está usando S5 na minha máquina local. Mas o Playground já está avançado, já está usando a transpilação direto para o S6. E assim. Então, você não haja o name space, eu soube classes aqui. Está certo? Não é seu concept name space? E até a próxima!
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: