Conteúdo[Esconder][Mostrar]
- 1. O que exatamente é o TypeScript e como ele é diferente do JavaScript?
- 2. Quais são alguns recursos notáveis do TypeScript?
- 3. Quais são alguns benefícios de usar o TypeScript?
- 4. Quais são algumas desvantagens de usar o TypeScript?
- 5. Quais são exatamente os componentes do TypeScript?
- 6. Você pode explicar as interfaces em TypeScript?
- 7. O que são variáveis no TypeScript e como elas são declaradas de várias maneiras?
- 8. Como um subconjunto de uma interface pode ser usado para gerar um novo tipo?
- 9. O que você quer dizer com 'qualquer' tipo e quando devo utilizá-los?
- 10. Como o TypeScript é uma linguagem com sintaxe opcional de tipagem estática?
- 11. No TypeScript, o que significam módulos?
- 12. Como funcionam os “enums” no TypeScript?
- 13. O que distingue um módulo interno de um módulo externo?
- 14. O que significa a função anônima do TypeScript?
- 15. No TypeScript, o que é um namespace e como você declara um?
- 16. Quais modificadores de acesso o TypeScript suporta?
- 17. O TypeScript permite sobrecarga de funções?
- 18. Como o TypeScript permite argumentos opcionais em funções?
- 19. Como var, let e const variam entre si?
- 20. No TypeScript, descreva os decoradores?
- 21. Em TypeScript, o que significam Mixins?
- 22. O que exatamente são os aliases de tipo no TypeScript?
- 23. O que significa o termo “variável de escopo”?
- 24. Para que exatamente o noImplicitAny é usado?
- 25. Como os tipos de união e interseção variam entre si?
- 26. Como você define uma palavra-chave de declaração do TypeScript?
- 27. No TypeScript, o que são genéricos?
- 28. O que significa JSX no TypeScript?
- 29. O que são Ambientes TypeScript e quando devo utilizá-los?
- 30. O que você quer dizer com classe abstrata no TypeScript?
- 31. O que exatamente é um arquivo TypeScript Map?
- 32. No TypeScript, o que são asserções de tipo?
- Conclusão
A Microsoft desenvolveu e continua a oferecer suporte à linguagem de programação TypeScript. Com a adição de tipagem estática como opção, é um superconjunto sintático de JavaScript.
A linguagem de desenvolvimento de aplicativos em larga escala TypeScript compila JavaScript. Como o TypeScript é um superconjunto de JavaScript, os programas escritos em JavaScript também são válidos no TypeScript.
Aqui está uma lista abrangente das perguntas e respostas mais típicas da entrevista de desenvolvedor do TypeScript, caso você esteja participando de uma.
1. O que exatamente é o TypeScript e como ele é diferente do JavaScript?
Um superconjunto de JavaScript, o TypeScript compila para JavaScript padrão. Do ponto de vista conceitual, TypeScript e JavaScript são semelhantes a SASS e CSS.
Em outras palavras, o TypeScript é JavaScript ES6 com mais alguns recursos. O JavaScript é uma linguagem de script mais parecida com o Python, enquanto o TypeScript é uma linguagem orientada a objetos e tipada estaticamente comparável a Java e C#.
Classes e interfaces fazem parte do design orientado a objetos do TypeScript, e a inferência de tipos é uma das muitas ferramentas disponíveis graças à sua tipagem estática.
JavaScript é escrito em um arquivo com extensão .js, enquanto TypeScript é escrito em um arquivo com extensão .ts.
Ao contrário do JavaScript, o código TypeScript não pode ser executado diretamente em um navegador ou em qualquer outra plataforma e não é compreendido pelos navegadores. A plataforma de destino executará o JavaScript simples que foi gerado a partir dos arquivos .ts usando o transpilador do TypeScript.
2. Quais são alguns recursos notáveis do TypeScript?
- A tipagem estática é um recurso do TypeScript que auxilia na verificação de tipos durante a compilação. Assim, mesmo sem executar o script, você pode detectar erros no código enquanto o escreve.
- O DOM pode ser alterado usando o TypeScript para adicionar ou remover itens.
- Qualquer sistema operacional, incluindo Windows, macOS e Linux, pode ter o compilador TypeScript instalado.
- Classes, interfaces e módulos são algumas das funcionalidades oferecidas pelo TypeScript. Assim, ele pode criar código orientado a objetos para desenvolvimento tanto do lado do cliente quanto do lado do servidor.
- A maioria dos recursos do ECMAScript 2015 (ES 6, 7) já estão incluídos no TypeScript, incluindo classe, interface, funções de seta, etc.
- Se você estiver utilizando a tipagem dinâmica do JavaScript, o TypeScript também oferece suporte à tipagem estática opcional.
3. Quais são alguns benefícios de usar o TypeScript?
- Qualquer mecanismo ou navegador JavaScript pode executar o TypeScript, pois é rápido, fácil de aprender e executado rapidamente.
- Ele compartilha a mesma sintaxe e semântica do JavaScript.
- Isso facilita a escrita mais rápida de código de front-end por desenvolvedores de back-end.
- Ele incorpora recursos ES6 e ES7 que podem função em JavaScript Mecanismos ES5 como Node.js.
- Bibliotecas JavaScript existentes, como Jquery, D3.js, etc. são suportadas por meio do arquivo Definition, que tem a extensão.d.ts.
- Um script JavaScript que já existe pode invocar o código TypeScript. Ele também se integra perfeitamente às estruturas e bibliotecas JavaScript atuais.
4. Quais são algumas desvantagens de usar o TypeScript?
- A codificação com TypeScript requer um longo processo de compilação.
- Ele não suporta classes que são abstratas.
- A qualidade dos arquivos de definição de tipo é um problema.
- Qualquer biblioteca de terceiros deve ter um arquivo de definição para ser usada.
- Uma etapa de compilação é necessária para converter TypeScript em JavaScript se quisermos executar o aplicativo TypeScript no navegador.
- JavaScript tem sido usado por desenvolvedores web por muitos anos, e TypeScript não oferece nada de novo.
5. Quais são exatamente os componentes do TypeScript?
No TypeScript, existem três categorias principais de componentes, incluindo:
- Língua: inclui anotações para o tipo, palavras-chave e sintaxe.
- Compilador TypeScript: As instruções TypeScript são traduzidas para JavaScript por este compilador (tsc).
- Serviço de linguagem TypeScript: o Language Service oferece aplicativos semelhantes a editores como uma segunda camada no topo do processo básico do compilador. O conjunto padrão de operações de edição comuns é suportado pelo serviço de idiomas.
6. Você pode explicar as interfaces em TypeScript?
O TypeScript usa interfaces para especificar a sintaxe das entidades. Em outras palavras, formulários de dados como objetos ou uma matriz de itens podem ser descritos usando interfaces. A palavra-chave interface, o nome da interface e sua definição são usados para declarar interfaces. Vamos examinar a interface básica de um objeto de usuário.
O tipo de uma variável pode ser definido usando a interface (semelhante a como você atribui tipos primitivos a uma variável). As propriedades da interface serão então atendidas por uma variável do tipo User.
Seu projeto TypeScript se beneficia das interfaces porque elas fornecem uniformidade. Além disso, as interfaces aprimoram as ferramentas do seu projeto, aprimorando os recursos de preenchimento automático do IDE e garantindo que os valores corretos sejam fornecidos aos construtores e métodos.
7. O que são variáveis no TypeScript e como elas são declaradas de várias maneiras?
Uma variável é uma área de memória especificamente designada que é usada para armazenar valores. Dois pontos (:) são colocados após o nome da variável e são seguidos pelo tipo ao declarar uma variável no TypeScript. Declaramos variáveis com a palavra-chave var, assim como em JavaScript.
Certas diretrizes devem ser observadas ao declarar uma variável no Typescript:
- O nome não pode começar com um número.
- O nome da variável deve conter letras ou números.
- O símbolo de dólar ($) e sublinhado (_) são os únicos caracteres especiais permitidos neste campo.
8. Como um subconjunto de uma interface pode ser usado para gerar um novo tipo?
Ao fornecer um tipo ou interface existente e escolher as chaves a serem excluídas do novo tipo, você pode criar um novo tipo no TypeScript usando o tipo de utilitário omit.
O exemplo a seguir demonstra como construir um novo tipo chamado UserPreview que é baseado na interface do usuário, mas exclui a propriedade email.
9. O que você quer dizer com 'qualquer' tipo e quando devo utilizá-los?
Às vezes, você precisa salvar um valor em uma variável, mas não tem certeza do tipo da variável de antemão. O valor pode se originar da entrada do usuário ou de uma solicitação de API, por exemplo. Você pode atribuir qualquer tipo de valor a um tipo de variável usando o tipo “qualquer”.
Quando o tipo de uma variável não é especificado explicitamente e o compilador não consegue determiná-lo a partir do contexto, o TypeScript acredita que a variável é do tipo any.
10. Como o TypeScript é uma linguagem com sintaxe opcional de tipagem estática?
É possível instruir o compilador a desconsiderar o tipo de uma variável no TypeScript, pois ela é opcionalmente tipada estaticamente. Qualquer tipo de dados pode ser usado para atribuir qualquer tipo de valor à variável. Ao ser compilado, o TypeScript não fornecerá nenhuma verificação de erros.
11. No TypeScript, o que significam módulos?
É eficaz agrupar variáveis, funções, classes, interfaces, etc. relevantes usando módulos. Ele pode ser usado, mas não no escopo global, apenas dentro de seu próprio escopo.
Em essência, as variáveis, funções, classes e interfaces definidas de um módulo não podem ser acessadas diretamente de fora do módulo.
A palavra-chave export pode ser usada para construir um módulo, enquanto a palavra-chave import pode ser usada para incluir um módulo em outro módulo.
12. Como funcionam os “enums” no TypeScript?
Um método de definir uma coleção de constantes nomeadas é usar enums ou tipos enumerados. Essas estruturas de dados têm um comprimento fixo e uma coleção de valores fixos.
Ao representar uma coleção de alternativas para um determinado valor no TypeScript, as enumerações são frequentemente usadas para descrever as possibilidades usando um conjunto de pares chave/valor.
Vamos ver uma ilustração de uma enumeração usada para fornecer uma variedade de tipos de usuário.
Enums são convertidos internamente em objetos JavaScript regulares pelo TypeScript após a compilação. O uso de enums é, portanto, preferível ao uso de várias variáveis const separadas.
Seu código é seguro para tipos e mais fácil de compreender devido ao agrupamento que as enumerações fornecem.
13. O que distingue um módulo interno de um módulo externo?
Módulo Interno:
- Os módulos internos eram um recurso da iteração anterior do Typescript.
- O nome e o corpo dos módulos internos são definidos usando ModuleDeclarations.
- Estes são membros de outros módulos que são locais ou exportados.
- Classes, interfaces, funções e variáveis são agrupadas em módulos internos, que podem ser exportados para outro módulo.
Módulo Externo:
- Na versão mais recente, os módulos externos são chamados de módulos.
- Um arquivo fonte separado conhecido como módulo externo é usado para criá-los, e cada um tem pelo menos uma declaração de importação ou exportação.
- Na versão mais recente, os módulos externos são chamados de módulos.
- As declarações internas das definições do módulo podem ser ocultadas usando módulos externos, deixando visíveis apenas os métodos e argumentos conectados à variável definida.
14. O que significa a função anônima do TypeScript?
As funções classificadas como anônimas não possuem um nome de função como identificador. Essas rotinas são definidas dinamicamente durante o tempo de execução. Como funções regulares, funções anônimas podem receber entradas e produzir resultados.
Uma função anônima geralmente fica inacessível depois de criada. As variáveis podem ser atribuídas a uma função anônima.
15. No TypeScript, o que é um namespace e como você declara um?
O namespace agrupa logicamente as funcionalidades. Estes preservam internamente o código legado datilografado. Ela engloba os traços e coisas com conexões particulares.
Outro nome para um namespace é um módulo interno. Interfaces, classes, funções e variáveis podem ser incluídas em um namespace para fornecer uma coleção de funcionalidades conectadas.
16. Quais modificadores de acesso o TypeScript suporta?
Veja a seguir exemplos de como os modificadores de acesso público, privado e protegido no TypeScript podem ser usados para controlar a acessibilidade de um membro de classe:
- Público – O acesso está disponível para todos os membros da classe, todas as suas classes descendentes e todas as instâncias da classe.
- Protegido – Eles são acessíveis a todos os membros da classe e todas as suas subclasses. No entanto, uma instância de classe não pode acessar.
- O acesso privado a eles é restrito apenas aos membros da classe.
Como o JavaScript é útil, se um modificador de acesso não for fornecido, ele será considerado público.
17. O TypeScript permite sobrecarga de funções?
Sim, a sobrecarga de função é suportada pelo TypeScript. Mas agora está sendo feito é estranho. Portanto, ao sobrecarregar com TypeScript, há apenas uma implementação com várias assinaturas.
Enquanto a segunda assinatura contém um parâmetro do tipo texto, a primeira assinatura possui apenas um parâmetro do tipo número. A terceira função, que inclui um argumento do tipo any, contém a implementação real.
A implementação determina então o tipo do parâmetro fornecido e executa uma seção separada de código de acordo com essa determinação.
18. Como o TypeScript permite argumentos opcionais em funções?
Ao contrário do JavaScript, se você tentar chamar uma função sem especificar a quantidade exata e os tipos de parâmetros conforme declarado na assinatura da função, o compilador TypeScript gerará um erro.
Você pode utilizar parâmetros opcionais utilizando o símbolo de ponto de interrogação ('?') para contornar esse problema. Ele mostra que os parâmetros opcionais podem ser indicados adicionando um “?” àqueles que podem ou não receber um valor.
19. Como var, let e const variam entre si?
Três maneiras diferentes de declarar uma variável são oferecidas pelo TypeScript, cada uma com um aplicativo sugerido.
var: declara uma variável global ou com escopo de função com o comportamento das variáveis var do JavaScript e diretrizes de escopo. As variáveis não precisam que seus valores sejam definidos quando são declaradas.
deixar: declara uma variável de bloco com escopo local. Let variáveis não precisam que o valor de uma variável seja definido quando são declaradas. O termo “variável local com escopo de bloco” refere-se a uma variável que só pode ser acessada de dentro do bloco em que está contida, como uma função, um bloco if/else ou um loop. Let variáveis não podem ser lidas ou gravadas antes de serem declaradas, em contraste com var.
const: Declara um valor para uma constante com escopo de bloco que não pode ser alterada após ser inicializada. As variáveis const precisam ser inicializadas antes de serem declaradas. Para variáveis que permanecem constantes durante toda a sua existência, isso é ótimo.
20. No TypeScript, descreva os decoradores?
Um acessador, propriedade, parâmetro, classe, função ou decorador podem ser declarados de uma maneira específica como decoradores. Decoradores são funções com o prefixo @expression que serão invocadas em tempo de execução com detalhes sobre a declaração decorada.
A expressão deve avaliar uma função para que os decoradores funcionem.
Os Decoradores TypeScript fornecem o objetivo de adicionar declarativamente anotações e informações ao código atual.
Em nosso arquivo tsconfig.json ou na linha de comando, você deve ativar a opção do compilador experimentalDecorators para habilitar o suporte experimental para decoradores:
21. Em TypeScript, o que significam Mixins?
Mixins são uma técnica de criar classes a partir de partes reutilizáveis em Javascript e misturar classes parciais para criar classes completas mais complexas.
O conceito é simples: a função B aceita a classe A e retorna uma nova classe com sua funcionalidade adicionada, ao contrário da classe A que estende a classe B para obter sua funcionalidade. A função B neste caso é um mixin.
22. O que exatamente são os aliases de tipo no TypeScript?
Os aliases de tipo alteram o nome de um tipo. Os aliases de tipo, como interfaces, podem ser usados para nomear primitivas, uniões, tuplas e quaisquer outros tipos que, de outra forma, teriam que ser definidos manualmente.
O alias não cria um novo tipo; em vez disso, ele altera o nome de um tipo existente. Aliasing uma primitiva não é realmente prático, embora possa ser benéfico para documentação.
Aliases de tipo, como interfaces, podem ser universais; tudo o que você precisa fazer é adicionar parâmetros de tipo e usá-los no lado direito da declaração de alias.
23. O que significa o termo “variável de escopo”?
JavaScript suporta variáveis de escopo local e global. O escopo é uma coleção de objetos, variáveis e funções.
Um exemplo de declaração de uma variável em dois escopos é:
- Variável com Escopo Local – Serve como objeto de função para uso dentro de funções.
- Variável com escopo global – Este objeto de janela pode ser usado dentro e fora das funções
24. Para que exatamente o noImplicitAny é usado?
O tratamento do compilador TypeScript dos tipos implícitos de seu projeto é alterado pela propriedade noImplicitAny no arquivo de configuração tsconfig.json para projetos TypeScript.
O sinalizador noImplicitAny pode ser definido como verdadeiro ou falso e sempre pode ser alterado após a inicialização. Dado que cada projeto é único, não há resposta certa ou errada sobre qual deve ser esse número.
Compreender as distinções entre os estados ativado e desativado do sinalizador pode ajudá-lo a selecionar qual configuração usar para o sinalizador.
O compilador não determina o tipo de uma variável com base em como ela é usada se o sinalizador noImplicitAny estiver definido como false (o padrão). O tipo é definido como qualquer por padrão pelo compilador.
No entanto, se a opção noImplicitAny for definida como true, o compilador fará um esforço para inferir o tipo e gerará um erro em tempo de compilação se não conseguir fazê-lo.
25. Como os tipos de união e interseção variam entre si?
Em vez de gerar novos tipos do zero, os tipos de união e interseção permitem compor e misturar tipos existentes. Tanto a união quanto a interseção têm qualidades distintas que as tornam perfeitas para certos casos de uso.
Um tipo que pode ser um dos vários tipos é referido como um tipo de união. A lista de tipos que serão utilizados no novo tipo é dividida usando o | (barra vertical) em tipos de união.
Vejamos uma ilustração:
Por outro lado, a interseção é definida como um tipo que mescla vários tipos em um, integrando todas as características de cada tipo para formar um novo tipo. A lista de tipos que serão mesclados é dividida em interseções usando o símbolo &.
Vamos examinar uma ilustração:
26. Como você define uma palavra-chave de declaração do TypeScript?
Não há arquivos de declaração TypeScript em bibliotecas ou estruturas JavaScript. No entanto, você deve utilizar a palavra-chave declare para usá-la no arquivo TypeScript sem encontrar erros de compilação.
Quando você deseja especificar uma variável que já pode existir em outro lugar, você usa a palavra-chave declare em declarações e métodos de ambiente.
27. No TypeScript, o que são genéricos?
Uma ferramenta chamada TypeScript Generics oferece um método para produzir peças reutilizáveis. Em vez de trabalhar com apenas uma forma de dados, ela pode desenvolver componentes que podem operar com uma variedade de tipos de dados.
Além disso, oferece segurança de tipo sem sacrificar a eficiência ou a produtividade. Podemos construir classes genéricas, funções genéricas, métodos genéricos e interfaces genéricas graças aos genéricos.
Os genéricos são coleções altamente tipadas, pois um parâmetro de tipo é escrito entre colchetes de abertura () e fechamento (>). Ele faz uso de um tipo único de variável de tipo chamada T, que significa tipos.
28. O que significa JSX no TypeScript?
JSX é um JavaScript legítimo que pode ser convertido de uma sintaxe semelhante a XML incorporável. Junto com o framework React, o JSX ganhou popularidade.
A compilação direta, verificação de tipo e incorporação de JSX em JavaScript são suportadas pelo TypeScript. Você deve dar ao seu arquivo a extensão a.tsx e ativar a opção JSX se desejar utilizá-la.
29. O que são Ambientes TypeScript e quando devo utilizá-los?
O compilador é informado sobre o código-fonte real que está localizado em outro lugar por meio de declarações de ambiente.
Ele será interrompido sem aviso prévio se tentarmos utilizar esses códigos-fonte em tempo de execução, mas eles não estiverem presentes. Arquivos semelhantes a documentos são arquivos de declarações de ambiente.
Se a fonte for alterada, a documentação deverá ser atualizada e ocorrerão problemas de compilador se o arquivo de declaração de ambiente não for alterado.
Além disso, nos permite alavancar bibliotecas JavaScript conhecidas que já são amplamente utilizadas, como jQuery, AngularJS, NodeJS, etc.
30. O que você quer dizer com classe abstrata no TypeScript?
As classes abstratas definem o contrato de um objeto sem permitir a instanciação direta do objeto. No entanto, uma classe abstrata também pode oferecer informações de implementação de seu membro.
Um ou mais membros abstratos podem ser encontrados em uma classe abstrata. Os membros abstratos da superclasse devem então ter uma implementação fornecida por qualquer classe que estenda a classe abstrata.
Vamos dar uma olhada em um exemplo TypeScript de uma classe abstrata e como uma classe diferente pode estendê-la. Embora as classes Car e Bike no exemplo abaixo estendam a classe Vehicle, cada uma delas implementa a função drive() de uma maneira única.
31. O que exatamente é um arquivo TypeScript Map?
Um arquivo de mapa de origem chamado arquivo TypeScript Map contém dados sobre nossos arquivos originais. Os arquivos de mapa de origem, ou arquivos .map, permitem que as ferramentas mapeiem entre o código JavaScript que é gerado e os arquivos de origem TypeScript que o produziram.
Além disso, esses arquivos podem ser consumidos por depuradores, permitindo depurar o arquivo TypeScript em vez do arquivo JavaScript.
32. No TypeScript, o que são asserções de tipo?
Embora a asserção de tipo funcione de maneira semelhante ao typecasting em outras linguagens como C# e Java, ela não realiza verificação de tipo ou rearranjo de dados.
Embora a declaração de tipo não tenha efeito no tempo de execução, a conversão de tipo oferece esse suporte. As asserções de tipo, por outro lado, são utilizadas apenas pelo compilador e fornecem orientação sobre como queremos que nosso código seja examinado.
Conclusão
Concluindo, esperamos que essas perguntas da entrevista do TypeScript sejam úteis para você, seja você um desenvolvedor se preparando para uma entrevista de emprego ou um gerente de contratação tentando encontrar o melhor candidato.
Lembre-se de que o processo de recrutamento envolve mais do que apenas conhecimento técnico. Para garantir que você consiga (ou localize o candidato adequado) o emprego, experiências anteriores e habilidades sociais são igualmente cruciais.
Muitas perguntas da entrevista do TypeScript são abertas e não têm uma única resposta certa, então tenha isso em mente.
Os entrevistadores estão interessados no raciocínio por trás de suas respostas.
Esteja sempre pronto para perguntas de acompanhamento explicando como você chegou à sua resposta. Descreva seu processo de pensamento.
Deixe um comentário