Declarar tipo de mapa o lista en TypeScript
Los mapas y las listas son las estructuras de datos básicas que se utilizan en todos los lenguajes de programación para escribir la lógica de la aplicación. Un mapa se utiliza para recuperar rápidamente elementos de datos de un almacén, mientras que una lista es una estructura de datos donde los elementos de datos se almacenan secuencialmente.
TypeScript por sí solo no es compatible con los tipos Map o List; sin embargo, es muy fácil crear los tipos requeridos utilizando los tipos integrados en TypeScript.
Declarar el tipo Registro
y Mapa
en TypeScript
TypeScript ha introducido el tipo Record
, que puede admitir tipos de mapas con pares clave-valor y tiene tipos genéricos para admitir mapas de diferentes tipos.
Más específicamente, Record<K,V>
indica que un objeto acepta claves de solo tipo K
, y los valores correspondientes a las claves deben ser de tipo V
.
key of Record<K,V>
produciría K
como tipo, y Record<K,V>[K]
es equivalente a V. El tipo Record
es un alias para firmas de índice como { [ tecla : K] : V }
.
const colorMap : Record<string, string> = {
'ylw' : 'yellow',
'blk' : 'black',
'bl' : 'blue'
};
Por lo tanto, al usar los tipos genéricos, podemos tener múltiples tipos para el tipo Mapa o Registro
en TypeScript. Después de la compilación, el siguiente objeto escrito se convierte en un objeto simple en JavaScript.
Además del objeto escrito, Javascript nativo tiene la función Mapa
, que puede inicializar una nueva instancia de Mapa
. Tiene bastantes funciones compatibles asociadas con él.
El siguiente segmento de código demostrará cómo se puede usar la función Mapa
para inicializar un nuevo objeto Mapa
.
const colorMap = new Map<string, string>();
colorMap.set("ylw", "yellow");
colorMap.set("blk", "black");
colorMap.forEach( ( v, k , _) => {
console.log( "key : " + k + ", value : " + v);
})
// keys
var keyList : string[] = [...colorMap.keys()];
console.log(keyList);
// values
var valueList : string[] = [...colorMap.values()];
console.log(valueList);
Producción :
"key : ylw, value : yellow"
"key : blk, value : black"
["ylw", "blk"]
["yellow", "black"]
Además de las funciones que se muestran, también admite otras funciones como “eliminar” y “borrar”. Estos se utilizan para eliminar una sola entrada del Mapa o borrar todas las entradas del Mapa, respectivamente.
Declarar el tipo Lista
en TypeScript
No hay un tipo de lista
incorporado en TypeScript; sin embargo, TypeScript proporciona el tipo Array
para almacenar elementos de datos contiguos. Es fácil crear una estructura de datos de lista ADT utilizando el tipo Array
.
class List<T> {
private items : Array<T>;
constructor(n? : number, defaultValue? : T){
if ( n === undefined) {
this.items = [];
} else {
if ( n && defaultValue){
this.items = Array(n).fill(defaultValue);
} else {
this.items = Array(n);
}
}
}
push(item : T){
this.items.push(item);
}
pop(item : T){
return this.items.pop();
}
get(index : number) : T | undefined {
return this.items[index];
}
set( index : number, item : T){
this.items[index] = item;
}
getItems() : Array<T> {
return this.items;
}
}
List.prototype.toString = function listToString(){
return JSON.stringify(this.getItems());
}
var list : List<string> = new List(5, "default");
list.set(1, "second");
list.set(0, "first");
console.log(list.toString());
Producción :
"["first","second","default","default","default"]"
Lo anterior muestra un ejemplo básico para construir una lista ADT; con algunas funciones básicas, se puede ampliar fácilmente para admitir cualquier lista requerida en la lógica de la aplicación.