только через 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 и т.д. Т.е. он оперирует исключительно их сигнатурами - "берут это, возвращают вот это". Как-то догадаться и сузить тип у тайпскрипта нет возможности.
Обсуждают сегодня