การเริ่มต้นแผนที่ใน typescript [ซ้ำ]
ฉันกำลังพยายามเริ่มต้นด้านล่างแผนที่ใน typescript พอพิมพ์ดูเหมือนจะว่างเปล่า
let map: Map<string, object> = new Map<string, object> ([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log(JSON.stringify(map));
// printing {}
// but not the initialized values
คำตอบ
เริ่มต้นอย่างถูกต้อง แต่การพิมพ์ไม่ได้พิมพ์ค่าทั้งหมดเหมือนอาร์เรย์ แต่คุณสามารถตรวจสอบได้โดยเพียงแค่เข้าถึงคีย์ - มีอยู่:
let map = new Map([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log(map);
console.log(map.get('api/service/method'));
console.log(map.get('"type": "html"'));
เกี่ยวข้องด้วย: ฉันจะแสดงวัตถุแผนที่ javascript ES6 ในคอนโซลได้อย่างไร
ตามที่ระบุไว้ที่นั่นคุณสามารถกางแผนที่และพิมพ์:
let map = new Map([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log([...map]);
นั่นเป็นเพราะJSON.stringify
ไม่ทราบวิธีการสร้างแผนที่ดังนั้นมันจะพยายามสตริงวัตถุที่อยู่ข้างใต้แทนซึ่งส่งผลให้วัตถุว่างเปล่า
ลองconsole.log(JSON.stringify([...a.entries()]));
แทน
การสตริงอ็อบเจ็กต์เกี่ยวข้องกับการกำหนดคุณสมบัติของอ็อบเจ็กต์ แต่Map
ไม่ได้ใช้คุณสมบัติเพื่อบันทึกข้อมูล ดังนั้นคุณจะได้รับวัตถุว่างเปล่าถ้าคุณผูกมันอย่างไร้เดียงสา
แทนที่จะแปลงเป็นอาร์เรย์ก่อน:
console.log(JSON.stringify([...map]));
เมื่อคุณใช้ JSON.stringify () บนแผนที่มันจะให้ {} เสมอ หาก typescript บอกว่าคุณทำถูกต้องแสดงว่าแผนที่อาจเริ่มต้นอย่างถูกต้อง