только через null assertion?
const strings = [{ key: 1, val: 'QWE' }, { key: 1, val: 'wer' }];
const myMap = new Map<number, string[]>();
strings.forEach(s => {
if (myMap.has(s.key)) {
myMap.set(s.key, []);
}
myMap.get(s.key).push(s.val);
});
Ну, то есть, в данном конкретном случае можно переписать как const found = myMap(get(s.key); if(found) { found.push(s.val); } else { myMap.set(s.key, [s.val]); } Но универсального какого-нибудь решения нет? Чтобы ТС знал, что если я добавил по ключу в Map/Set, то get по этому же ключу не выдаст undefined.
проблема тут в том, что у ТС нет знаний о том, как работают Map.get, Map.set и т.д. Т.е. он оперирует исключительно их сигнатурами - "берут это, возвращают вот это". Как-то догадаться и сузить тип у тайпскрипта нет возможности.
Обсуждают сегодня