Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

207
Views
Mapa ES6 en mecanografiado

Estoy creando una clase en mecanografiado que tiene una propiedad que es un mapa ES6 (ECMAscript 2016) así:

 class Item { configs: ????; constructor () { this.configs = new Map(); } }

¿Cómo declaro un tipo de mapa ES6 en mecanografiado?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

EDITAR (5 de junio de 2019): Si bien la idea de que "TypeScript admite Map de forma nativa" sigue siendo cierta, dado que la versión 2.1 TypeScript admite algo llamado Record .

 type MyMapLikeType = Record<string, IPerson>; const peopleA: MyMapLikeType = { "a": { name: "joe" }, "b": { name: "bart" }, };

Desafortunadamente, el primer parámetro genérico (tipo de clave) todavía no se respeta por completo: incluso con un tipo de string , algo como peopleA[0] (un number ) sigue siendo válido.


EDITAR (25 de abril de 2016): la respuesta a continuación es antigua y no debe considerarse la mejor respuesta. TypeScript admite Maps "de forma nativa" ahora, por lo que simplemente permite usar ES6 Maps cuando la salida es ES6. Para ES5, no proporciona rellenos polivalentes; necesita incrustarlos usted mismo.

Para obtener más información, consulte la respuesta de mohamed hegazy a continuación para obtener una respuesta más moderna, o incluso este comentario de reddit para una versión corta.


A partir de la versión beta 1.5.0, TypeScript aún no es compatible con Maps . Todavía no forma parte de la hoja de ruta, tampoco.

La mejor solución actual es un objeto con clave y valor escritos (a veces llamado hashmap). Para un objeto con claves de tipo string y valores de tipo number :

 var arr : { [key:string]:number; } = {};

Algunas advertencias, sin embargo:

  1. las claves solo pueden ser de tipo string o number
  2. En realidad, no importa qué use como tipo de clave, ya que los números/cadenas aún se aceptan indistintamente (solo se aplica el valor).

Con el ejemplo anterior:

 // OK: arr["name"] = 1; // String key is fine arr[0] = 0; // Number key is fine too // Not OK: arr[{ a: "a" }] = 2; // Invalid key arr[3] = "name"; // Invalid value
over 4 years ago · Santiago Trujillo Report

0

Ver comentario en: https://github.com/Microsoft/TypeScript/issues/3069#issuecomment-99964139

TypeScript no viene con pollyfills integrados. depende de usted decidir qué pollyfill usar, si corresponde. puede usar algo como es6Collection , es6-shims , corejs , etc. Todo lo que necesita el compilador de TypeScript es una declaración para las construcciones ES6 que desea usar. puede encontrarlos todos en este archivo lib .

aquí está la parte relevante:

 interface Map<K, V> { clear(): void; delete(key: K): boolean; entries(): IterableIterator<[K, V]>; forEach(callbackfn: (value: V, index: K, map: Map<K, V>) => void, thisArg?: any): void; get(key: K): V; has(key: K): boolean; keys(): IterableIterator<K>; set(key: K, value?: V): Map<K, V>; size: number; values(): IterableIterator<V>; [Symbol.iterator]():IterableIterator<[K,V]>; [Symbol.toStringTag]: string; } interface MapConstructor { new <K, V>(): Map<K, V>; new <K, V>(iterable: Iterable<[K, V]>): Map<K, V>; prototype: Map<any, any>; } declare var Map: MapConstructor;
over 4 years ago · Santiago Trujillo Report

0

Aquí hay un ejemplo:

 this.configs = new Map<string, string>(); this.configs.set("key", "value");

Manifestación

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!