Eşleme benzeri bir nesne kullanmaya ek olarak, bir süredir ES6'ya derlerken veya ES6 tür tanımlarıyla çok amaçlı bir dolgu kullanırken TypeScript'te kullanılabilen gerçek bir Map
nesne olmuştur :
let people = new Map<string, Person>();
Object
Biraz farklı bir sözdizimiyle aynı işlevi ve daha fazlasını destekler :
// 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");
Bunun tek başına harita benzeri bir nesnenin kullanımına göre çeşitli avantajları vardır , örneğin:
- Her ikisi de tarafından desteklenmeyen
Object
(hayır, Object
sayıları desteklemiyorsa, bunları dizelere dönüştürür) dize tabanlı olmayan anahtarlar, örneğin sayılar veya nesneler için destek
- Her zaman bir anahtar türü ve bir değer türü
--noImplicitAny
olduğu için, kullanılmadığında hatalara daha az yer varken, bir nesnenin dizin imzası olmayabilirMap
- Öğe ekleme / kaldırma (anahtar / değer çiftleri) işlevselliği , bir
Object
Buna ek olarak, bir Map
nesne, ortak görevler için birçoğu Object
yardımcı işlevleri hacklemeden basit s aracılığıyla kullanılamayan daha güçlü ve zarif bir API sağlar (bunlardan bazıları ES5 hedefleri veya altında tam bir ES6 yineleyici / yinelenebilir poli dolgu gerektirir):
// 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());