타이프 스크립트의지도 초기화 [중복]

Aug 17 2020

Typescript에서 Map 아래에서 초기화하려고합니다. 인쇄하면 비어있는 것 같습니다.

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

답변

1 MauriceNino Aug 17 2020 at 14:35

올바르게 초기화되었지만 인쇄하면 배열과 같은 모든 값이 인쇄되지 않습니다. 그러나 키에 액세스하여 확인할 수 있습니다.

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

관련 항목 : 콘솔에 자바 스크립트 ES6 맵 객체를 표시하려면 어떻게해야합니까?

거기에서 언급했듯이지도를 펼치고 다음을 인쇄 할 수 있습니다.

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

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

JessevanAssen Aug 17 2020 at 14:35

그 이유 JSON.stringify는 Map을 문자열 화하는 방법을 모르기 때문에 대신 기본 개체를 문자열 화하려고 시도하여 빈 개체가 생성됩니다.

console.log(JSON.stringify([...a.entries()]));대신 시도

NiettheDarkAbsol Aug 17 2020 at 14:35

객체를 문자열 화하는 것은 속성을 문자열 화하는 것과 관련이 있지만 Map데이터를 저장하기 위해 속성을 사용하지 않습니다. 따라서 순진하게 문자열 화하면 빈 객체를 얻습니다.

대신 먼저 배열로 변환하십시오.

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

지도에서 JSON.stringify ()를 사용하면 항상 {}를 제공합니다. typescript에서 제대로하고 있다고 표시되면지도가 올바르게 초기화되었을 수 있습니다.