Во-первых, давайте исправим ваши ошибки.
someMap.set(new KeyType(style=199), 5);
Это недопустимый синтаксис JavaScript / TypeScript.Если вы хотите, чтобы 199
был вашим аргументом, запишите его как:
someMap.set(new KeyType(199), 5);
Вторым моментом является то, как ваш класс KeyType
сериализуется с целью печати на консоль.
for (let [k, m] of someMap) {
console.log(`1 k ${k} m ${m}`);
}
Здесь k
представляет KeyType
, который в вашей области представляет класс.Среда выполнения JavaScript сериализует классы, возвращая "[object] Object"
, что, как я полагаю, не то, что вы хотели.
Если вы намеревались зарегистрировать style
вашего KeyType
, замените его следующим:
for (let [k, m] of someMap) {
console.log(`1 k ${k.style} m ${m}`);
}
Окончательный результат можно проверить на TypeScript Playground .
Примечание : распространенным источником путаницы является переменное затенение.Ваш класс называется KeyType
, но есть также глобальный тип, называемый тем же.
type KeyType = "public" | "private" | "secret";
Если ваш код находится в файле без каких-либо операторов импорта / экспорта, он будет рассматриваться как скрипт а не модуль .Это означает, что глобальный тип будет иметь приоритет, и если вы попытаетесь вызвать его по new KeyType()
, вы получите ошибку времени компиляции:
«KeyType» относится только к типу, но в настоящее времяздесь используется как значение.