선생님 아직 new map() 이나 map.set 등으로 생성되지 않은 map 인데, 안에 데이터가 있는거 마냥 쓰는 코드가 있어, 질문 드립니다.

위 코드 보시면 A,B,C 모듈 import 해와서 제네릭에 넣어주고,
'moduleCollection'은 extends Map<string, V> 다... 라고 되어 있는데요.
그리고 다른 파일에서는 'moduleCollection'을 import 해서,
new moduleCollection(); 인스턴스를 생성해서 'moduleCollection' 클래스에 들어있는 메소드를 사용하고 있습니다.
그런데 이해가 어려운점이..
아직 map에 아무것도 안들어가 있는 상태에서 사용하는 메소드가
데이터가 들어있어야 가능한 메소드들이라 이해가 가지 않습니다.

'moduleCollection' 클래스의 public get aModule(); 메소드 보시면,
map 에 아직 아무것도 없는데도,
Array.form(this.entries())~ 를 사용하고 있어요.
그리고 다른 파일에서 생성한 인스턴스인 new moduleCollection()도,
this.aTools.values() 식으로 Map 안에 데이터가 있어야 가능한 values() 메소드를 사용하고 있는데요..
아무리 찾아봐도 어디서 데이터가 생성된건지 전혀 모르겠습니다.ㅠㅠ
그리고 Map <S,V> 이런 문법식의 코드가 어떤 원리로 작동되는건지 못찾겠어요...
MDN 에도 없고 타입스크립트 doc에도 안나오는데 어디서 찾을 수 있을까요??