Aprendendo TypeScript
Melhore suas habilidades de desenvolvimento web usando JavaScript Type-Safe
Descrição do livro
O TypeScript conquistou o universo JavaScript. Identificado em pesquisas com desenvolvedores como uma das linguagens de crescimento mais rápido e mais populares do mundo, o TypeScript é amplamente usado em empresas voltadas para o consumidor, assim como para outros tipos de negócios em todo o planeta e é frequentemente considerado responsável por ajudar no desenvolvimento de aplicações web em larga escala. No entanto, na verdade, o que é TypeScript? Como e por que ele funciona e como podemos usá-lo?
Este livro prático levará programadores JavaScript iniciantes e avançados do nível de desconhecimento dos “tipos” ou “sistemas de tipos” ao domínio total dos aspectos básicos do TypeScript.
Você aprenderá:
• Os benefícios do TypeScript e as características gerais de seu sistema de tipos baseado no JavaScript “vanilla” (puro).
• Como fornecer ao sistema de tipos do TypeScript anotações de tipo somente no desenvolvimento.
• Como o TypeScript analisa e entende códigos para ajudar a aumentar os padrões de desenvolvimento existentes.
• Como o TypeScript o ajudará a trabalhar com arrays, classes, funções, objetos e outras estruturas internas importantes do JavaScript.
• Como usar eficientemente a grande quantidade de opções de configuração do TypeScript para personalizar o compilador TypeScript de acordo com suas equipes e projetos.
• Várias integrações com o IDE, como as refatorações automatizadas e as buscas inteligentes em código fornecidas pelo TypeScript para ajudá-lo a desenvolver rapidamente com menos bugs.
Ver menos ▲Sumário
Sumário
- Elogios a Aprendendo TypeScript
- Prefácio
- Parte I ■ Conceitos
- Capítulo 1 ■ Do JavaScript ao TypeScript
- História do JavaScript
- Armadilhas do JavaScript vanilla
- Liberdade cara
- Documentação vaga
- Ferramentas de desenvolvedor insatisfatórias
- TypeScript!
- Começando a usar o TypeScript Playground
- O TypeScript em ação
- Liberdade com restrições
- Documentação precisa
- Ferramentas de desenvolvedor mais robustas
- Compilação da sintaxe
- Comece localmente
- Execução local
- Recursos do editor
- O que o TypeScript não é
- Um remédio para códigos ruins
- Extensões para JavaScript (em grande parte)
- Mais lento do que o JavaScript
- Término da evolução
- Resumo
- Capítulo 2 ■ O sistema de tipos
- O que o tipo fornece?
- Sistemas de tipos
- Tipos de erros
- Capacidade de atribuição
- Entendendo os erros de capacidade de atribuição
- Anotações de tipo
- Anotações de tipo desnecessárias
- Formas dos tipos
- Módulos
- Resumo
- Capítulo 3 ■ Uniões e literais
- Tipos união (union)
- Declaração de tipos união
- Propriedades da união
- Estreitamento (narrowing)
- Estreitamento por atribuição
- Verificações condicionais
- Verificações com typeof
- Tipos literais
- Capacidade de atribuição de literais
- Verificação estrita de nulos
- O erro de um bilhão de dólares
- Estreitamento por verdades
- Variáveis sem valores iniciais
- Aliases de tipos
- Os aliases de tipo não são JavaScript
- Combinando aliases de tipo
- Resumo
- Capítulo 4 ■ Objetos
- Tipos objeto
- Declaração de tipos de objeto
- Apelidos de tipos
- Tipagem estrutural
- Verificação de uso
- Verificação de propriedades em excesso
- Tipos de objeto aninhados
- Propriedades opcionais
- Uniões de tipos de objeto
- Uniões de tipos de objeto inferidas
- Uniões de tipos objeto explícitas
- Estreitamento de tipos de objeto
- Uniões discriminadas
- Tipos interseção
- Perigos dos tipos interseção
- Resumo
- Parte II ■ Recursos
- Capítulo 5 ■ Funções
- Parâmetros de funções
- Parâmetros obrigatórios
- Parâmetros opcionais
- Parâmetros padrão
- Parâmetros rest
- Tipos de retorno
- Tipos de retorno explícitos
- Tipos função
- Parênteses dos tipos função
- Inferências do tipo do parâmetro
- Apelidos de tipos função
- Mais tipos de retono
- Retorno void
- Retorno never
- Sobrecargas de funções
- Compatibilidade das assinaturas de chamadas
- Resumo
- Capítulo 6 ■ Arrays
- Tipos array
- Tipos de array e função
- Arrays de tipo união
- Arrays any modificável
- Arrays multidimensionais
- Membros do array
- Aviso: membros inconsistentes
- Spreads e Rests
- Spreads
- Spreading de parâmetros rest
- Tuplas
- Capacidade de atribuição da tupla
- Inferência de tuplas
- Resumo
- Capítulo 7 ■ Interfaces
- Apelidos de tipo versus interfaces
- Tipos de propriedades
- Propriedades opcionais
- Propriedades somente leitura
- Funções e métodos
- Assinaturas de chamadas
- Assinaturas de índice
- Interfaces aninhadas
- Extensões de interfaces
- Propriedades sobrescritas
- Extensão de múltiplas interfaces
- Mesclagem de interfaces
- Conflitos de nomeação de propriedades
- Resumo
- Capítulo 8 ■ Classes
- Métodos de classes
- Propriedades de classes
- Propriedades de função
- Verificação de inicialização
- Propriedades opcionais
- Propriedades somente leitura
- Classes como tipos
- Classes e Interfaces
- Implementação de múltiplas interfaces
- Extensão de uma classe
- Capacidade de atribuição na extensão
- Construtores sobrescritos
- Métodos sobrescritos
- Propriedades sobrescritas
- Classes abstratas
- Visibilidade dos membros
- Modificadores de campo static
- Resumo
- Capítulo 9 ■ Modificadores de tipo
- Tipos universais
- any, novamente
- unknown
- Predicados de tipo
- Operadores de tipos
- keyof
- typeof
- Asserções de tipo
- Asserção dos tipos de erro capturados
- Asserções de não nulo
- Advertências para as asserções de tipo
- Asserções const
- Literais para primitivos
- Objetos somente leitura
- Resumo
- Capítulo 10 ■ Genéricos
- Funções genéricas
- Chamadas com tipos genéricos explícitos
- Múltiplos parâmetros de tipo para funções
- Interfaces genéricas
- Tipos inferidos de interfaces genéricas
- Classes genéricas
- Tipos explícitos de classes genéricas
- Extensão de classes genéricas
- Implementação de interfaces genéricas
- Métodos genéricos
- Estáticos genéricos da classe
- Aliases de tipo genéricos
- Uniões discriminadas genéricas
- Modificadores de genéricos
- Padrões genéricos
- Tipos genéricos restritos
- keyof e os parâmetros de tipo restritos
- Promises
- Criação de promises
- Funções async
- Uso correto dos genéricos
- Regra de ouro dos genéricos
- Convenções de nomeação dos genéricos
- Resumo
- Parte III ■ Uso
- Capítulo 11 ■ Arquivos de declaração
- Arquivos de declaração
- Declaração de valores de runtime
- Valores globais
- Mesclagem de interface global
- Aumentos globais
- Declarações internas
- Declarações de biblioteca
- Declarações DOM
- Declarações de módulo
- Declarações de módulo curinga
- Tipos de pacote
- declaration
- Tipos de pacote de dependências
- Exposição de tipos de pacote
- DefinitelyTyped
- Disponibilidade dos tipos
- Resumo
- Capítulo 12 ■ Uso de recursos do IDE
- Navegação no código
- Busca de definições
- Busca de referências
- Busca de implementações
- Criação de código
- Preenchimento de nomes
- Atualizações de importações automáticas
- Códigos de ação
- Trabalho efetivo com erros
- Erros do serviço de linguagem
- Resumo
- Capítulo 13 ■ Opções de configuração
- Opções do comando tsc
- Modo pretty
- Modo de observação
- Arquivos TSConfig
- tsc --init
- CLI versus arquivos de configuração
- Inclusões de arquivo
- include
- exclude
- Extensões alternativas
- Sintaxe JSX
- resolveJsonModule
- Emissão
- outDir
- target
- Emissão de declarações
- Mapas de fonte
- noEmit
- Verificação de tipos
- lib
- skipLibCheck
- Modo estrito
- Módulos
- module
- moduleResolution
- Interoperabilidade com o CommonJS
- isolatedModules
- JavaScript
- allowJs
- checkJs
- Suporte ao JSDoc
- Extensões de configuração
- extends
- Bases de configuração
- Referências de projeto
- composite
- references
- Modo de build
- Resumo
- Parte IV ■ Material complementar
- Capítulo 14 ■ Extensões de sintaxe
- Propriedades de parâmetros de classe
- Decorators experimentais
- Enums
- Valores numéricos automáticos
- Enums com valores string
- Enums const
- Namespaces
- Exportações de namespaces
- Namespaces aninhados
- Namespaces em definições de tipo
- Prefira módulos em vez de namespaces
- Importações e exportações somente de tipo
- Resumo
- Capítulo 15 ■ Operações com tipos
- Tipos mapeados
- Tipos mapeados a partir de outros tipos
- Alteração de modificadores
- Tipos mapeados genéricos
- Tipos condicionais
- Tipos condicionais genéricos
- Distributividade dos tipos
- Tipos inferidos
- Tipos condicionais mapeados
- never
- never e as interseções e uniões
- never e os tipos condicionais
- never e os tipos mapeados
- Tipos template literals
- Tipos intrínsecos de manipulação de strings
- Chaves de template literals
- Remapeamento de chaves de tipos mapeados
- Operações com tipos e a complexidade
- Resumo
- Glossário
- Índice remissivo






