지도 와 같은 객체 를 사용하는 것 외에도 , 얼마 동안 실제 Map
객체 가 있었는데, ES6로 컴파일 할 때 또는 ES6 유형 정의 로 폴리 필을 사용할 때 TypeScript에서 사용할 수 있습니다 .
let people = new Map<string, Person>();
Object
약간 다른 구문으로와 같은 기능을 지원 합니다.
// 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");
이것만으로 다음 과 같은 맵 과 같은 객체 를 사용하는 것보다 몇 가지 장점이 있습니다.
- 문자열 기반이 아닌 키 (예 : 숫자 또는 객체)를 지원 하지 않음
Object
(아니오, Object
숫자를 지원하지 않는 경우 문자열로 변환)
- 사용하지 않는 오류를 덜 룸
--noImplicitAny
A가로, Map
항상이 키의 유형과 값 유형을 객체가있는 반면, 수 인덱스-서명이 없습니다
- 항목 (키-값 쌍)을 추가 / 제거하는 기능은 속성을 생성하는 것과 달리 작업에 최적화 되어 있습니다.
Object
또한 Map
객체는 일반적인 작업에보다 강력하고 우아한 API를 제공하며, 대부분 Object
도우미 함수를 해킹하지 않고 간단한 기능으로 는 사용할 수 없습니다 (일부는 ES5 대상 이하의 경우 완전한 ES6 반복자 / 반복 가능한 폴리 필이 필요하지만).
// 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());