EDIT (Jun 5 2019): While the idea that "TypeScript supports Map natively" is still true, since version 2.1 TypeScript supports something called Record. type MyMapLikeType = Record<string, IPerson>; const peopleA: MyMapLikeType = { "a": { name: "joe" }, "b": { name: "bart" }, }; Unfortunately the first generic parameter (key type) is still not fully respected: even with a string type, something lik