¿Qué son los tipos de literales de string en TypeScript?

El tipo de literal de string se agregó en la versión 1.8 de TypeScript . Los tipos de literales de string funcionan bien con los tipos de unión y los alias de tipo en la práctica. Estas propiedades se pueden combinar para dar a las strings una funcionalidad similar a la enumeración. El tipo literal de string le permite especificar un conjunto de posibles valores de string para una variable, solo esos valores de string se pueden asignar a una variable. TypeScript arroja un error de tiempo de compilación si uno intenta asignar un valor a la variable que no está definido por el tipo de literal de string. 

Ejemplo 1: En este ejemplo, declaramos una variable y configuramos los tipos de literales de string para que sean ‘a’ o ‘b’ o ‘c’, el parámetro pipe(|) se usa para este propósito. Cuando se asigna ‘a’ a la variable, no da un error ya que ‘a’|’b’|’c’ especifica que la variable puede ser ‘a’ o ‘b’ o ‘c’. Cuando asignamos ‘d’ a la variable, el compilador TypeScript genera un error.

Javascript

let variable1: "a" | "b" | "c";
 
variable1 = "a";
console.log(variable1); // No error
 
variable1 = "d";
console.log(variable1); // Error

Salida: salida del compilador TypeScript:

error TS2322: Type '"d"' is not assignable to type '"a" | "b" | "c"'.
  variable1 = "d";
  ~~~~~~~~~

Salida después de ejecutar el archivo javascript:

a
d

Ejemplo 2: los tipos de literales de string distinguen entre mayúsculas y minúsculas, por lo que no podemos asignar valores en mayúsculas a variables donde se requieren minúsculas. Se demuestra en el siguiente ejemplo.

Javascript

let variable1: "a" | "b" | "c";
 
variable1 = "a";
console.log(variable1); // No error
 
variable1 = "A";
console.log(variable1); // Error

Salida: salida del compilador TypeScript:

two.ts:5:1 – error TS2820: el tipo ‘”A”’ no se puede asignar al tipo ‘”a” | “b” | «C»‘. ¿Querías decir ‘”a”’? variable1 = “A”;

~~~~~~~~~

Ejemplo 3: Este ejemplo muestra que también podemos usar funciones para establecer valores en variables de tipo literal de string. En este ejemplo, necesitamos establecer el estado del artículo, el estado se puede establecer como «en_revisión» o «publicación_en cola» o «publicado» o «esperando_autor». Cuando se pasa ‘en_revisión’ a la función, no se genera ningún error. Cuando se pasa ‘eliminar’ a la función, se genera un error porque la string no está incluida en el estado. 

Cuando se pasa ‘en_revisión’ a la función.

Javascript

type status = "in_review" | "publish_queue" | "published" | "awaiting_author";
 
let article_status: string;
 
function setArticleStatus(articleParams: status) {
  article_status = articleParams;
  console.log(article_status);
}
 
// No error status is set to 'in_review'
setArticleStatus("in_review");

Producción:

in_review

Cuando se pasa ‘delete’ a la función.

Javascript

type status = "in_review" | "publish_queue" | "published" | "awaiting_author";
 
let article_status: string;
 
function setArticleStatus(articleParams: status) {
  article_status = articleParams;
  console.log(article_status);
}
 
// gives error status is set to 'delete'
setArticleStatus("delete");

Producción:

error TS2345: el argumento de tipo ‘”eliminar”’ no se puede asignar al parámetro de tipo ‘estado’. establecerEstadoArticulo(“eliminar”);

~~~~~~~~

Referencia: https://www.typescriptlang.org/docs/handbook/literal-types.html#string-literal-types

Publicación traducida automáticamente

Artículo escrito por isitapol2002 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *