Selain menggunakan objek seperti peta , telah ada Map
objek aktual untuk beberapa waktu sekarang, yang tersedia dalam TypeScript ketika dikompilasi ke ES6, atau ketika menggunakan polyfill dengan definisi tipe ES6 :
let people = new Map<string, Person>();
Ini mendukung fungsi yang sama seperti Object
, dan banyak lagi, dengan sintaks yang sedikit berbeda:
// 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");
Ini sendiri memiliki beberapa keunggulan dibandingkan menggunakan map- seperti objek, seperti:
- Dukungan untuk kunci berbasis non-string, misalnya angka atau objek, yang tidak didukung oleh keduanya
Object
(tidak, Object
tidak mendukung angka, itu mengubahnya menjadi string)
- Lebih sedikit ruang untuk kesalahan saat tidak menggunakan
--noImplicitAny
, karena Map
selalu memiliki tipe kunci dan tipe nilai , sedangkan objek mungkin tidak memiliki indeks-tanda tangan
- Fungsi menambahkan / menghapus item (pasangan nilai kunci) dioptimalkan untuk tugas tersebut, tidak seperti membuat properti pada
Object
Selain itu, sebuah Map
objek menyediakan API yang lebih kuat dan elegan untuk tugas-tugas umum, yang sebagian besar tidak tersedia melalui Object
s sederhana tanpa meretas bersama-sama fungsi pembantu (meskipun beberapa di antaranya memerlukan ES6 iterator / polyfill iterable penuh untuk target ES5 atau di bawah):
// 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());