Red de conocimiento informático - Problemas con los teléfonos móviles - Reducción de tipos en TypeScript

Reducción de tipos en TypeScript

En este artículo, aprenderemos varias formas de limitar su alcance. La reducción es el proceso de derivar un tipo de un tipo menos preciso a un tipo más preciso.

Comencemos con una función simple:

La función anterior puede aceptar un número o una cadena. Supongamos que queremos realizar diferentes operaciones dependiendo de si la entrada es un número o una cadena. En este caso, usaremos protecciones de tipo JavaScript para verificar si es una cadena o un número como se muestra a continuación:

En el ejemplo anterior, usamos protecciones de tipo JavaScript para limitar el tipo de entrada a un número o cadena. Las protecciones de tipo se utilizan para comprobar si una variable es de un tipo específico, es decir, número, cadena, objeto, etc. Cuando se utiliza protección de tipos, Typecript espera que las variables sean de este tipo. Escribe automáticamente basándose en esta información y comprueba su uso.

En este ejemplo, utilizamos el operador typeof para reducir el tipo, lo que comprobará si el valor tiene el tipo original.

La siguiente es una lista de protecciones de tipo JavaScript disponibles:

línea

número

bigint

booleano

Banderas

No clara

Objetivo

Función

Veamos otros métodos de tipo de reducción.

En este tipo de restricción, comprobamos si una variable es verdadera antes de usarla. TypeScript elimina automáticamente la posibilidad de que una verificación condicional salga mal cuando una variable es verdadera, es decir, indefinida o vacía.

Por ejemplo, la siguiente función foo acepta un parámetro x, cuyo tipo es cadena o indefinido (opcional).

Al comprobar si x es verdadero, el tipo de x se convertirá en cadena; de lo contrario, no estará definido.

En muchos casos se realizará reducción de verdad: las expresiones (||, amp, !), !! y operaciones booleanas.

Si dos variables son iguales, deben ser del mismo tipo. Si el tipo de variable es inexacto (es decir, desconocido, arbitrario, etc.). ) y es igual a otra variable del tipo exacto, TypeScript utilizará esta información para limitar el tipo de la primera variable.

Tome la siguiente función como ejemplo. Tiene dos parámetros: x e y, x es una cadena o número e y es un número. Cuando el valor de x es igual al valor de y, se infiere que el tipo de x es número; de lo contrario, es una cadena.

En este método, crea un objeto que contiene un miembro de texto que se puede utilizar para diferenciar entre dos uniones diferentes.

En el siguiente ejemplo, la función calcula diferentes formas de cuadrados, rectángulos y círculos. Empezaremos definiendo los tipos de rectángulos y círculos.

Basado en los tipos anteriores, cada objeto tiene un campo de texto de forma, que puede ser circular o rectangular. Podemos calcular el área usando el campo de forma en una función, que aceptará la unión de un rectángulo y un círculo, así:

Cuando el campo de forma es un rectángulo, solo puedes acceder a los disponibles en el rectángulo escriba Propiedades, es decir, ancho, alto y forma. Esto también es cierto cuando el campo de forma es un círculo; TypesScript solo permite el acceso al radio y al círculo; de lo contrario, se generará un error.

El operador in se utiliza para determinar si un objeto tiene un nombre de propiedad contenido. Se utiliza en objeto en el formato de "propiedad", donde propiedad es el nombre de la propiedad cuya existencia se debe verificar en el objeto.

En el ejemplo anterior, utilizamos unión diferencial para distinguir círculos y rectángulos. También podemos usar el operador in para lograr el mismo efecto, pero esta vez verificaremos si una forma contiene algunas propiedades, como el radio de un círculo, el ancho y la altura de un rectángulo, y el resultado será el mismo.

En este tipo de minificación, TypeScript reduce el tipo de la variable en cuanto se le asigna un valor. Toma el número de tipo de unión o cadena de la variable x.

Si le asignamos un valor, el tipo se convierte en número. Si le asignamos una cadena, el tipo se convierte en cadena.

El operador instancia de JavaScript se utiliza para comprobar si un valor es una instancia de una clase. Se utiliza en el formato de una instancia de valor de valor2 y devuelve un valor booleano. Al comprobar si un valor es una instancia de una clase, TypeScript limita el tipo asignándolo a una variable.

Tomemos el siguiente ejemplo, donde una función acepta una fecha, que puede ser una cadena o una fecha. Si es una fecha, queremos convertirla en una cadena. Si es una cadena, la devolvemos sin cambios. Podemos usar instancia de para verificar si es una instancia de Fecha y convertirla en una cadena como se muestra a continuación.