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?