No TypeScript, o recurso de narrowing permite que variáveis com múltiplos tipos possíveis sejam verificadas em tempo de execução, garantindo maior segurança e flexibilidade ao tratar diferentes tipos dentro de funções. Esse comportamento é essencial quando uma função precisa adaptar seu comportamento conforme o tipo do dado recebido. Com base nesse conceito, analise as afirmativas a seguir: Afirmativas: I. O narrowing é utilizado no TypeScript para verificar o tipo de uma variável durante a execução do programa, e não na fase de compilação. II. O operador typeof é um dos principais mecanismos utilizados no TypeScript para aplicar narrowing, possibilitando comportamentos específicos conforme o tipo da variável. III. O uso de narrowing favorece a criação de funções mais flexíveis e reutilizáveis, permitindo a manipulação segura de parâmetros com diferentes tipos. Marque a alternativa correta:
Questão
No TypeScript, o recurso de narrowing permite que variáveis com múltiplos tipos possíveis sejam verificadas em tempo de execução, garantindo maior segurança e flexibilidade ao tratar diferentes tipos dentro de funções. Esse comportamento é essencial quando uma função precisa adaptar seu comportamento conforme o tipo do dado recebido.
Com base nesse conceito, analise as afirmativas a seguir: Afirmativas: I. O narrowing é utilizado no TypeScript para verificar o tipo de uma variável durante a execução do programa, e não na fase de compilação. II. O operador typeof é um dos principais mecanismos utilizados no TypeScript para aplicar narrowing, possibilitando comportamentos específicos conforme o tipo da variável. III. O uso de narrowing favorece a criação de funções mais flexíveis e reutilizáveis, permitindo a manipulação segura de parâmetros com diferentes tipos.
Marque a alternativa correta:
Alternativas
A) I e II
B) II e III
C) I
D) I, II e III
E) II
Explicação
Vamos avaliar cada afirmativa à luz do que é narrowing no TypeScript.
I. “O narrowing é utilizado no TypeScript para verificar o tipo de uma variável durante a execução do programa, e não na fase de compilação.”
- O narrowing é uma análise do compilador (em tempo de compilação) que reduz o tipo estático de uma variável a partir de checagens que aparecem no código (como
typeof,instanceof, comparação comnull, etc.). - As checagens (ex.:
typeof x === 'string') acontecem em tempo de execução, mas o narrowing em si é o TypeScript entendendo, em compilação, que dentro daquele bloco o tipo está mais específico. - Portanto, dizer que é usado “durante a execução e não na compilação” está incorreto.
II. “O operador typeof é um dos principais mecanismos utilizados no TypeScript para aplicar narrowing...”
- Correto.
typeofé um type guard comum para diferenciar tipos primitivos (comostring,number,boolean,undefined,function, etc.), e o TypeScript usa isso para estreitar o tipo dentro do bloco.
III. “O uso de narrowing favorece a criação de funções mais flexíveis e reutilizáveis...”
- Correto. Ao aceitar union types (por exemplo,
string | number) e estreitar com segurança antes de operar, a função consegue tratar múltiplos cenários de forma segura e reutilizável.
Conclusão: apenas II e III são verdadeiras.
Alternativa correta: (B).