EDIT (5 giugno 2019): mentre l'idea che "TypeScript supporta in Map
modo nativo" è ancora vera, poiché la versione 2.1 TypeScript supporta qualcosa chiamato Record
.
type MyMapLikeType = Record<string, IPerson>;
const peopleA: MyMapLikeType = {
"a": { name: "joe" },
"b": { name: "bart" },
};
Sfortunatamente il primo parametro generico (tipo chiave) non è ancora del tutto rispettato: anche con un string
tipo, qualcosa come peopleA[0]
(a number
) è ancora valido.
MODIFICA (25 aprile 2016): la risposta che segue è vecchia e non deve essere considerata la risposta migliore. TypeScript ora supporta Maps "nativamente", quindi consente semplicemente di utilizzare ES6 Maps quando l'output è ES6. Per ES5, non fornisce polyfill; devi incorporarli tu stesso.
Per ulteriori informazioni, consultare la risposta di Mohamed Hegazy di seguito per una risposta più moderna, o anche questo commento reddit per una versione breve.
A partire dalla versione 1.5.0 beta, TypeScript non supporta ancora Maps . Non fa ancora parte della tabella di marcia .
La migliore soluzione attuale è un oggetto con chiave e valore digitati (a volte chiamato hashmap). Per un oggetto con chiavi di tipo string
e valori di tipo number
:
var arr : { [key:string]:number; } = {};
Alcuni avvertimenti, tuttavia:
- le chiavi possono essere solo di tipo
string
onumber
- In realtà non importa quale tipo di chiave utilizzi, poiché i numeri / le stringhe vengono comunque accettati in modo intercambiabile (viene applicato solo il valore).
Con l'esempio sopra:
// 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