strings recorrer objetos objeto lista declarar buscar array agregar arrays object dictionary typescript

arrays - recorrer - TypeScript Objetos como tipos de diccionario como en C#



lista de objetos javascript (5)

Además de usar un objeto similar a un Map , ha existido un objeto Map real durante algún tiempo, que está disponible en TypeScript cuando se compila en ES6, o cuando se usa un polyfill con las type-definitions ES6:

let people = new Map<string, Person>();

Es compatible con la misma funcionalidad que Object , y más, con una sintaxis ligeramente diferente:

// Adding an item (a key-value pair): people.set("John", { firstName: "John", lastName: "Doe" }); // Checking for the presence of a key: people.has("John"); // true // Retrieving a value by a key: people.get("John").lastName; // "Doe" // Deleting an item by a key: people.delete("John");

Esto solo tiene varias ventajas sobre el uso de un objeto similar a un mapa, como:

  • Compatibilidad con claves no basadas en cadenas, p. Ej., Números u objetos, ninguno de los cuales es compatible con Object (no, Object , no admite números, los convierte en cadenas)
  • Menos espacio para errores cuando no se utiliza --noImplicitAny , ya que un Map siempre tiene un tipo de clave y un tipo de valor , mientras que un objeto puede no tener una firma de índice
  • La funcionalidad de agregar / eliminar elementos (pares clave-valor) está optimizada para la tarea, a diferencia de crear propiedades en un Object

Además, un objeto Map proporciona una API más potente y elegante para tareas comunes, la mayoría de las cuales no están disponibles a través de los Object simples sin piratear las funciones de ayuda (aunque algunas de ellas requieren un iterador de ES6 completo o un polyfill iterable para objetivos de ES5 o inferior) :

// Iterate over Map entries: people.forEach((person, key) => ...); // Clear the Map: people.clear(); // Get Map size: people.size; // Extract keys into array (in insertion order): let keys = Array.from(people.keys()); // Extract values into array (in insertion order): let values = Array.from(people.values());

Tengo un código JavaScript que utiliza objetos como diccionarios; por ejemplo, un objeto ''persona'' guardará algunos detalles personales borrados de la dirección de correo electrónico.

var people = {<email> : <some personal data''>}; adding > "people[<email>] = <data>;" getting > "var data = people[<email>];" deleting > "delete people[<email>];"

¿Es posible describir esto en Typescript? o tengo que usar una matriz?


Lodash tiene una implementación de diccionario simple y tiene buen soporte para TypeScript

Instale Lodash:

npm install lodash @types/lodash --save

Importación y uso:

import { Dictionary } from "lodash"; let properties : Dictionary<string> = { "key": "value" } console.log(properties["key"])


Por supuesto:

var map: { [email: string]: Customer; } = { }; map[''[email protected]''] = new Customer(); // OK map[14] = new Customer(); // Not OK, 14 is not a string map[''[email protected]''] = ''x''; // Not OK, ''x'' is not a customer

También puede crear una interfaz si no desea escribir esa anotación de tipo completo cada vez:

interface StringToCustomerMap { [email: string]: Customer; } var map: StringToCustomerMap = { }; // Equivalent to first line of above


Puedes usar interfaces con plantillas como esta:

interface Map<T> { [K: string]: T; } let dict: Map<number> = {}; dict["one"] = 1;


También puede utilizar el tipo de registro en mecanografiado:

export interface nameInterface { propName : Record<string, otherComplexInterface> }