Fundamentos de Typescript
47 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál de las siguientes afirmaciones describe mejor la tipificación dinámica en JavaScript?

  • El tipo de una variable se infiere dinámicamente según el valor que se le asigna. (correct)
  • Los tipos de datos deben ser declarados explícitamente antes de su uso.
  • JavaScript no soporta el concepto de 'tipos de datos'.
  • El tipo de una variable se define al momento de la compilación y no puede cambiar.

TypeScript requiere la especificación explícita de los tipos de datos, pero no puede inferirlos implícitamente.

False (B)

¿Qué ventaja principal ofrece TypeScript al requerir la especificación de tipos de datos estáticos?

Detección temprana de errores

TypeScript es un _________ de JavaScript, lo que significa que cualquier código JavaScript válido también es código TypeScript válido.

<p>superconjunto</p> Signup and view all the answers

¿Cuál es el propósito principal de las anotaciones de tipo en TypeScript?

<p>Especificar explícitamente el tipo de dato de una variable, parámetro o valor de retorno. (B)</p> Signup and view all the answers

Si habilitas la opción declaration en el compilador de TypeScript, ¿qué tipo de archivo adicional se genera?

<p>Un archivo .d.ts con información sobre los tipos de datos. (D)</p> Signup and view all the answers

Relaciona los siguientes conceptos de TypeScript con su descripción correcta:

<p>Tipado Dinámico = El tipo de una variable se determina en tiempo de ejecución. Tipado Estático = El tipo de una variable se define explícitamente y se verifica en tiempo de compilación. Inferencia de Tipos = El compilador deduce el tipo de una variable sin necesidad de una declaración explícita. Anotación de Tipo = Declaración explícita del tipo de una variable o parámetro usando <code>:</code>.</p> Signup and view all the answers

Después de compilar un archivo TypeScript, el archivo .d.ts contiene el código JavaScript ejecutable.

<p>False (B)</p> Signup and view all the answers

¿Qué ocurre cuando se habilita la opción strictNullChecks en el compilador de TypeScript?

<p>El compilador no permite la asignación de valores <code>null</code> y <code>undefined</code> a otros tipos que no sean los correspondientes. (C)</p> Signup and view all the answers

Aplicar typeof al tipo null en JavaScript devuelve 'null'.

<p>False (B)</p> Signup and view all the answers

¿Qué carácter se utiliza en TypeScript para una afirmación de tipo no nula?

<p>!</p> Signup and view all the answers

Una __________ de asignación definitiva se utiliza para indicarle al compilador que una variable será inicializada antes de su uso, incluso si el compilador no puede detectarlo automáticamente.

<p>afirmación</p> Signup and view all the answers

Relacione las siguientes técnicas con su descripción correspondiente en TypeScript cuando se trabaja con null y undefined:

<p>Afirmación de tipo no nula = Utilizar el carácter <code>!</code> para asegurar que un valor no es <code>null</code> o <code>undefined</code>. Guardián de tipos = Usar condicionales (<code>if-else</code>) o <code>switch</code> para refinar el tipo de una variable. Afirmación de asignación definitiva = Utilizar el carácter <code>!</code> después del nombre de una variable durante su declaración para indicar que será inicializada antes de su uso.</p> Signup and view all the answers

¿Cuál es una alternativa para evitar errores cuando se trabaja con uniones de tipos que incluyen null en TypeScript?

<p>Utilizar un guardián de tipos para verificar si el valor es <code>null</code> antes de realizar operaciones sobre él. (A)</p> Signup and view all the answers

El uso de la función eval es siempre recomendable en TypeScript, ya que permite ejecutar código dinámicamente y resolver problemas de inicialización de variables.

<p>False (B)</p> Signup and view all the answers

Si una función puede devolver null, ¿cómo se debe modificar la anotación de tipo del resultado de la función?

<p>Se debe ampliar la unión de tipos para incluir <code>null</code>.</p> Signup and view all the answers

En TypeScript, ¿cuál es la principal razón para no poder usar un case en un switch para comprobar el tipo null directamente?

<p>Al aplicar <code>typeof</code> a <code>null</code> se obtiene 'object'. (D)</p> Signup and view all the answers

Si se incluye null en una unión de tipos, la intersección de propiedades y métodos de los tipos de la unión se encontrará __________, lo que puede limitar el uso directo de métodos y propiedades.

<p>vacía</p> Signup and view all the answers

¿Qué problema principal surge al usar el tipo de datos any en TypeScript?

<p>Puede llevar a errores inesperados en tiempo de ejecución debido a la transformación automática de tipos. (C)</p> Signup and view all the answers

TypeScript siempre infiere el tipo de datos más específico posible para las variables y parámetros, incluso si no se especifica explícitamente.

<p>False (B)</p> Signup and view all the answers

¿Cómo se puede evitar que TypeScript infiera implícitamente el tipo de datos any?

<p>Habilitando la opción noImplicitAny en el compilador de TypeScript.</p> Signup and view all the answers

Las __________ de tipos permiten especificar un conjunto de tipos de datos para una variable o parámetro en TypeScript.

<p>uniones</p> Signup and view all the answers

¿Cuál es la principal ventaja de utilizar alias de tipos en TypeScript?

<p>Aumentan la legibilidad y mantenibilidad del código al proporcionar nombres descriptivos para los tipos. (C)</p> Signup and view all the answers

Los tipos literales en TypeScript solo pueden ser cadenas de caracteres.

<p>False (B)</p> Signup and view all the answers

¿Qué utilidad tiene la opción noImplicitAny en el compilador de TypeScript para mantener la calidad del código?

<p>Obliga a especificar explícitamente los tipos de datos, evitando errores inesperados debido a la inferencia automática de <code>any</code>.</p> Signup and view all the answers

¿Cuál es el propósito principal de una afirmación de tipo (type assertion) en TypeScript?

<p>Indicar explícitamente al compilador que trate un valor como de un tipo de datos específico. (A)</p> Signup and view all the answers

Un __________ de tipos permite asignar un nombre alternativo a un tipo existente, facilitando la lectura y el mantenimiento del código.

<p>alias</p> Signup and view all the answers

Un guardián de tipo (type guard) en TypeScript siempre requiere el uso de afirmaciones de tipo para funcionar correctamente.

<p>False (B)</p> Signup and view all the answers

En TypeScript, ¿cuál es la diferencia fundamental entre usar any y una unión de tipos?

<p><code>any</code> permite cualquier tipo sin comprobación, mientras que la unión especifica un conjunto limitado de tipos permitidos. (B)</p> Signup and view all the answers

Declarar una constante con un valor literal siempre requiere una anotación de tipo explícita en TypeScript.

<p>False (B)</p> Signup and view all the answers

¿Qué tipo de datos proporciona TypeScript para indicar que un guardián de tipos ha comprobado todos los posibles tipos de datos de un valor?

<p>never</p> Signup and view all the answers

En JavaScript, al usar un string en una sentencia condicional, solo la cadena ______ se evalúa como falsa.

<p>vacía</p> Signup and view all the answers

¿Cuál es el principal problema de depender de la inferencia implícita del tipo any en TypeScript?

<p>Se pierden los beneficios de la comprobación estática de tipos, lo que puede llevar a errores en tiempo de ejecución.</p> Signup and view all the answers

Relacione los siguientes conceptos de TypeScript con su descripción:

<p>Afirmación de tipo = Indica al compilador que trate un valor como de un tipo de datos específico. Guardián de tipo = Usa <code>typeof</code> para verificar el tipo de una variable. Tipo <code>never</code> = Indica que todos los posibles tipos de datos ya han sido comprobados. Tipo <code>unknown</code> = Alternativa más segura a <code>any</code>, requiere comprobación de tipo antes de la asignación.</p> Signup and view all the answers

Los __________ de tipo se utilizan para restringir los valores que puede tomar una variable a un conjunto específico de valores literales.

<p>tipos literales</p> Signup and view all the answers

¿Qué ventaja ofrece el uso de tipos literales en la definición de parámetros de funciones en TypeScript?

<p>Permite restringir los valores que un parámetro puede recibir, mejorando la seguridad y la claridad del código. (A)</p> Signup and view all the answers

¿Qué diferencia principal existe entre los tipos de datos any y unknown en TypeScript?

<p><code>unknown</code> requiere una afirmación o un guardián de tipo antes de ser asignado a otro tipo, mientras que <code>any</code> no. (A)</p> Signup and view all the answers

Una vez que se asigna un valor de tipo string a una variable declarada con tipo any, esta variable no puede cambiar a un tipo number durante la ejecución del programa.

<p>False (B)</p> Signup and view all the answers

El tipo de dato never puede ser asignado explícitamente a una variable en cualquier punto del código TypeScript.

<p>False (B)</p> Signup and view all the answers

¿Cuál es la principal función de la opción strictNullChecks en el compilador de TypeScript?

<p>Evitar errores relacionados con valores <code>null</code> o <code>undefined</code>.</p> Signup and view all the answers

El valor ______ se usa cuando se ha definido una variable a la que aún no se le ha asignado un valor.

<p>undefined</p> Signup and view all the answers

¿Qué ocurre cuando se intenta utilizar una afirmación de tipo (type assertion) no esperada en TypeScript?

<p>Se puede evitar que el compilador informe de un error, pero puede causar errores en tiempo de ejecución. (C)</p> Signup and view all the answers

Una vez que se define un alias de tipo en TypeScript, no se puede utilizar en la definición de otros tipos personalizados más complejos.

<p>False (B)</p> Signup and view all the answers

Si una función en TypeScript devuelve un valor que podría ser number o string, ¿cómo se declara el tipo de retorno de esta función usando uniones de tipos?

<p>number | string</p> Signup and view all the answers

El proceso de reducir el tipo de una variable a un tipo más específico se conoce como ______.

<p>type narrowing</p> Signup and view all the answers

¿Cuál de las siguientes opciones describe mejor el uso del operador typeof en un guardián de tipo (type guard)?

<p>Verifica si una variable es de un tipo de datos básico de JavaScript. (C)</p> Signup and view all the answers

El valor null y el valor undefined son intercambiables en TypeScript, lo que significa que se pueden usar indistintamente.

<p>False (B)</p> Signup and view all the answers

Flashcards

Tipado dinámico

El tipo de una variable se determina por el valor que se le asigna.

Tipado estático

Requiere la especificación explícita de los tipos de datos, permitiendo detectar errores en tiempo de compilación al usar tipos incorrectos.

Anotación de tipo

Indicar explícitamente el tipo de dato de una variable, parámetro o el retorno de una función.

Inferencia de tipo

El compilador deduce automáticamente el tipo de dato basándose en el contexto.

Signup and view all the flashcards

Opción 'declaration'

Permite al compilador de TypeScript inferir los tipos de datos y conocer los tipos de datos que se están utilizando en el código.

Signup and view all the flashcards

Archivo '.d.ts'

Archivo generado por el compilador de TypeScript que contiene información sobre los tipos de datos (tanto explícitos como inferidos).

Signup and view all the flashcards

TypeScript y JavaScript

TypeScript es un superconjunto de JavaScript, lo que significa que cualquier código JavaScript válido también es código TypeScript válido.

Signup and view all the flashcards

Ventajas de TypeScript

TypeScript permite detectar errores en tiempo de compilación, lo que puede evitar errores en tiempo de ejecución al forzar el tipo de dato.

Signup and view all the flashcards

Tipo de dato 'any'

Tipo de dato que permite que una variable, parámetro o resultado sea de cualquier tipo.

Signup and view all the flashcards

Inferencia implícita de 'any'

TypeScript lo asigna cuando no puede inferir un tipo más específico.

Signup and view all the flashcards

Opción 'noImplicitAny'

Desactiva la inferencia implícita del tipo 'any' para forzar la tipificación explícita.

Signup and view all the flashcards

Uniones de tipos (Type Unions)

Permiten especificar que una variable puede ser de uno de varios tipos.

Signup and view all the flashcards

Tipos Literales

Anotaciones de tipo que utilizan valores específicos (ej: 'asNumber', 123).

Signup and view all the flashcards

Combinación de tipos literales y uniones de tipo

Pueden usarse con uniones de tipos para limitar las opciones posibles.

Signup and view all the flashcards

Alias de tipo (Type Alias)

Nombre alternativo para un tipo de dato, haciéndolo más descriptivo.

Signup and view all the flashcards

Ventajas de usar alias de tipo

Mejoran la legibilidad y mantenibilidad del código.

Signup and view all the flashcards

Tipos personalizados

Posibilidad de crear tipos personalizados utilizando alias.

Signup and view all the flashcards

Resultado de usar el tipo de dato any

El compilador de TypeScript no indica ningún tipo de error y el código generado se ejecuta correctamente, llevando a cabo las correspondientes transformaciones de un tipo de datos a otro.

Signup and view all the flashcards

Anotaciones con Tipos literales

Se pueden utilizar literales como, por ejemplo, cadenas de caracteres o constantes numéricas, para llevar a cabo anotaciones de tipo explícitas.

Signup and view all the flashcards

Definir Alias en Typescript

En TypeScript podemos definir alias para los tipos de datos y, como consecuencia de lo anterior, podemos definir nuestros propios tipos.

Signup and view all the flashcards

Buena practica en TS

Es una buena práctica, por tanto, desactivar el uso implícito del tipo de datos any habilitando la opción noImplicitAny del compilador de TypeScript.

Signup and view all the flashcards

Alternativa de parametro

Retomando el ejemplo del apartado anterior, podríamos tener la siguiente alternativa al uso del parámetro isNumber de tipo boolean

Signup and view all the flashcards

Un tipo de dato especifico

En el otro extremo se encontraría un tipo de datos específico como, por ejemplo, boolean, number, e incluso, un tipo literal, los cuales veremos más adelante.

Signup and view all the flashcards

Opción strictNullChecks

Impide asignar null y undefined a tipos que no sean los correspondientes, forzando un manejo explícito de estos valores.

Signup and view all the flashcards

typeof null

Al aplicar typeof a null, JavaScript devuelve object, lo cual impide usar un case específico para null en un switch.

Signup and view all the flashcards

Afirmación de tipo no nula

Consiste en indicar que una variable no tomará el valor null, usando el caracter ! después del valor.

Signup and view all the flashcards

Extraer null de una unión

Permite excluir el tipo null de una unión de tipos para poder usar propiedades y métodos de los demás tipos.

Signup and view all the flashcards

Guardián de tipos con null

Comprobar explícitamente si un valor puede ser null dentro de una sentencia if-else para que TypeScript lo reconozca.

Signup and view all the flashcards

Afirmación de asignación definitiva

Consiste en utilizar el caracter ! durante la declaración de una variable, justo después de su nombre.

Signup and view all the flashcards

Responsabilidad de asignación

Indicarle al compilador que nos vamos a responsabilizar de que se asigne un valor a una variable antes de ser utilizada.

Signup and view all the flashcards

Función eval

Función que evalúa código JavaScript representado como una cadena de texto, cuyo uso general está desaconsejado.

Signup and view all the flashcards

Riesgos de usar eval

Se pueden producir errores en tiempo de ejecución debido a la falta de comprobaciones sobre el código fuente ejecutado por la función.

Signup and view all the flashcards

Tipos null y undefined

Se utilizan para poder detectar errores en tiempo de compilación en TypeScript, y poder evitar errores en tiempo de ejecución

Signup and view all the flashcards

Unión de Tipos

Un tipo que representa una combinación de tipos, usando tipos literales o tipos como string y number.

Signup and view all the flashcards

Afirmación de Tipo (Type Assertion)

Indicar al compilador de TypeScript que trate un valor como de un tipo específico.

Signup and view all the flashcards

Type Narrowing

El proceso de reducir el tipo de una variable a un tipo más específico.

Signup and view all the flashcards

Guardián de Tipo (Type Guard)

Utilizar typeof para determinar el tipo de datos de una variable en tiempo de ejecución.

Signup and view all the flashcards

Tipo never

Un tipo de dato en TypeScript que representa un valor que nunca debería ocurrir.

Signup and view all the flashcards

Tipo unknown

Una alternativa más segura a any que requiere una afirmación o guardián de tipo antes de usar el valor.

Signup and view all the flashcards

Valor null

Representa la ausencia de valor o un valor inválido.

Signup and view all the flashcards

Valor undefined

Se usa cuando una variable ha sido declarada pero no se le ha asignado un valor.

Signup and view all the flashcards

Alias de Tipos

Crear nombres alternativos para los tipos.

Signup and view all the flashcards

Flujo de Ejecución con Type Guards

Permite refinar el tipo de una variable dentro de un bloque condicional.

Signup and view all the flashcards

Restricciones del Tipo unknown

El valor es asignable solo a los tipos any o unknown sin una afirmación o guardián de tipo.

Signup and view all the flashcards

Riesgos del Tipado Dinámico

Puede llevar a errores si no se maneja correctamente, ya que el tipo puede cambiar en tiempo de ejecución.

Signup and view all the flashcards

Acceso a Métodos con Type Guards

Permite el uso de métodos específicos del tipo después de haber sido verificado.

Signup and view all the flashcards

Study Notes

Tipado Dinámico en JavaScript

  • JavaScript usa tipado dinámico, donde el tipo de una variable se infiere del valor asignado.
  • Una variable puede cambiar de tipo de dato según el valor que se le asigne.
  • Esto puede llevar a problemas, ya que los errores de tipo pueden no detectarse hasta el tiempo de ejecución.

Tipado Estático en TypeScript

  • TypeScript requiere la especificación explícita de los tipos de datos.
  • El compilador detecta errores cuando se utilizan tipos de datos inesperados.
  • Los tipos de datos en TypeScript son los mismos que en JavaScript, ya que TypeScript es un superconjunto.

Anotaciones de Tipo

  • Se definen los tipos de datos estáticos explícitamente con ": Tipo".
  • Ejemplo: const myVar: number = 10;
  • Se pueden usar en parámetros de funciones, valores de retorno, constantes y variables.

Inferencia de Tipo

  • El compilador de TypeScript puede inferir tipos implícitamente.
  • No es necesario declarar explícitamente el tipo si el compilador puede deducirlo del contexto.

Opción Declaration del Compilador

  • Habilitar la opción declaration crea un archivo .d.ts con información sobre los tipos de datos.
  • Informa sobre tipos definidos explícitamente o inferidos por el compilador.

Tipo de Dato 'any'

  • Permite que una variable, parámetro o valor de retorno sea de cualquier tipo.
  • Proporciona la flexibilidad del tipado dinámico de JavaScript.
  • Usar any puede llevar a errores inesperados en tiempo de ejecución debido a la transformación automática de tipos.
  • TypeScript asigna implícitamente el tipo any si no puede inferir un tipo más concreto.

Opción 'noImplicitAny'

  • Desactiva el uso implícito del tipo any.
  • Obliga a especificar un tipo de dato para evitar errores relacionados con tipos.
  • Mejora la seguridad del código al hacer los tipos más explícitos.

Uniones de Tipos (Type Unions)

  • Permiten especificar un conjunto de tipos de datos para una variable.
  • Ejemplo: let result: number | string;
  • Ofrecen flexibilidad al permitir que una variable tenga uno de varios tipos especificados.

Tipos Literales

  • Se usan literales (cadenas o números) para anotaciones de tipo explícitas.
  • Restringen los valores que una variable puede tomar a un conjunto específico de literales.
  • Se combinan con uniones de tipo para limitar aún más los valores posibles.
  • Ejemplo:
type ConversionType = "asNumber" | "asString";
function add(n1: number, n2: number, conversionMode: ConversionType) { ... }
add(4, 5, "asNumber"); // Válido
add(4, 5, "otroValor"); // Error

Alias de Tipo

  • Permiten definir nombres alternativos para los tipos de datos.
  • Mejoran la legibilidad y limpieza del código.
  • Se definen con la palabra clave type.
  • Ejemplo: type ResultType = string | number;
  • Se pueden usar para tipos personalizados más complejos.

Afirmación de Tipo (Type Assertion)

  • Indica al compilador que trate un valor como de un tipo concreto (type narrowing).
  • Ejemplo: const myNumResult = add(2, 2) as number;
  • Permite acceder a métodos y propiedades del tipo afirmado.
  • Usar una afirmación de tipo incorrecta puede llevar a errores en tiempo de ejecución.

Guardián de Tipo (Type Guard)

  • Utiliza typeof para verificar el tipo de datos.
  • Alternativa a las afirmaciones de tipo.
  • Permite bifurcar el flujo de ejecución basándose en el tipo de la variable.
  • El compilador confía en que el código dentro de cada condición se ejecutará solo si el tipo es correcto.

Tipo de Dato 'never'

  • Se usa cuando un guardián de tipos ha comprobado todos los posibles tipos de un valor.
  • Indica que un valor nunca debería ocurrir o ser asignado.
  • Puede ser inferido por el compilador en casos como el bloque default de un switch que cubre todos los casos posibles.

Tipo de Dato 'unknown'

  • Alternativa más segura al uso de any.
  • Un valor unknown solo puede asignarse a tipos any o unknown sin una afirmación o guardián de tipo.
  • Introduce un nivel adicional de comprobación.

Valores 'null' y 'undefined'

  • null representa algo que no existe o no es válido.
  • undefined indica que una variable se ha declarado pero no se le ha asignado un valor.

Opción StrictNullChecks

  • El compilador no permite la asignación de los valores null y undefined a otros tipos.
  • Evita errores comunes causados por el uso incorrecto de estos valores.
  • Para solucionarlo, se amplía la unión de tipos utilizada para anotar el tipo, indicando que null también forma parte de dicha unión.
  • Se requiere comprobar explícitamente si el valor es null en una sentencia if-else.
  • Aplicar typeof al tipo null se obtiene como respuesta object lo que impide su uso en sentencias CASE de los switch.

Afirmación de Tipo No Nula

  • Se usa el carácter ! después de un valor.
  • Afirma que un valor no será null o undefined.
  • Sirve para extraer el tipo null de una unión de tipos.

Afirmación de Asignación Definitiva

  • Usa el carácter ! después del nombre de la variable durante la declaración.
  • Indica al compilador que se asignará un valor a la variable antes de usarla.
  • Utilizar esta característica con cuidado, ya que no previene errores en runtime.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Description

Evalúa tu comprensión sobre Typescript, incluyendo tipificación dinámica, ventajas de tipos estáticos, y anotaciones de tipo. Aprende sobre la compilación y las opciones del compilador de TypeScript.

More Like This

Master TypeScript
10 questions

Master TypeScript

AstoundedMahoganyObsidian avatar
AstoundedMahoganyObsidian
TypeScript Programming Quiz
5 questions
Einführung in TypeScript und JavaScript
8 questions
Use Quizgecko on...
Browser
Browser