Typcript'te harita başlatma [duplicate]

Aug 17 2020

Typcript'te aşağıdaki Map'i başlatmaya çalışıyorum. Yazdırdığımda boş görünüyor.

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

Yanıtlar

1 MauriceNino Aug 17 2020 at 14:35

Doğru şekilde başlatılır, ancak yazdırıldığında tüm değerleri bir dizi gibi yazdırmaz. Ancak anahtarlara erişerek kontrol edebilirsiniz - bunlar var:

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"'));

Ayrıca ilgili: Konsolda bir javascript ES6 harita nesnesini nasıl görüntüleyebilirim?

Orada belirtildiği gibi, haritayı yayabilir ve şunu yazdırabilirsiniz:

let map = new Map([
    [
        "api/service/method",
        {
            uriPath: {}
        }
    ],
    [
        "\"type\": \"html\"",
        {
            body: {}
        }
    ]
]);

console.log([...map]);

JessevanAssen Aug 17 2020 at 14:35

Bunun nedeni JSON.stringify, bir Haritanın nasıl dizileneceğini bilmemesidir, bu nedenle onun yerine temeldeki nesneyi dizgileştirmeye çalışır, bu da boş bir nesneye neden olur.

Onun console.log(JSON.stringify([...a.entries()]));yerine dene

NiettheDarkAbsol Aug 17 2020 at 14:35

Bir nesnenin dizgesini dizmek, özelliklerini dizgilendirmeyi içerir, ancak Mapverilerini kaydetmek için özellikleri kullanmaz. Böylece saf bir şekilde dizerseniz boş bir nesne elde edersiniz.

Bunun yerine önce bir diziye dönüştürün:

console.log(JSON.stringify([...map]));
LionelFoxcroft Aug 17 2020 at 14:39

Bir haritada JSON.stringify () kullandığınızda, size her zaman {} verir. Daktilo yazısı doğru yaptığınızı söylüyorsa, harita muhtemelen doğru şekilde başlatılmıştır.