javascript - TypeScript: Kan jag härleda typen för ett nummerindexvärde?


Jag skapade en hjälpfunktion för att omvandla ett objekt med numrerade nycklar till en Map:

interface IndexedObject {
    [index: number]: unknown;
};

const objectToIndexedMap = (indexedObject: IndexedObject) => new Map(
    Object.entries(indexedObject).map(
        ([ index, field ]) => [ Number(index), field ]
    )
);

Jag använder det för att konvertera objekt jag får från API:et till en mer praktisk Map, där jag inte längre behöver hantera strängnycklar. Problemet är att den returnerade typen är Map<number, any>, medan jag skulle vilja använda typen av dessa värden i IndexedObject.

Är det möjligt att få den typen och göra så att min funktion returnerar denna specifika typ för Map-värden?

Så till exempel skulle detta ge ett fel:

interface IndexedNumbers {
    [index: number]: number;
}

const indexedNumbers: IndexedNumbers = api.numbers; // pseudocode
const map = objectToIndexedMap(indexedNumbers);
const foo = map.get(0)!.toUpperCase(); // This should throw an error

Självklart vet jag att jag kan skriva in det manuellt:

const map: Map<number, number> = objectToIndexedMap(indexedNumbers);

Men jag skulle älska om TypeScript gjorde det åt mig. Är det möjligt?