TypeScript "Vänstersidan av en aritmetisk operation måste vara av typen 'any', 'number', 'bigint' eller en enum-typ"
Jag har en array av objekt med detta gränssnitt
interface Item {
country: string;
cases: number;
deaths: number;
population: number;
}
Jag vill göra en sorteringsfunktion
const sortDescending = (type: keyof Item): void => {
data.sort((a, b) => {
return a[type] - b[type];
});
};
Problem som TypeScript inte tillåter mig att utföra på grund av "Vänstersidan av en aritmetisk operation måste vara av typen 'any', 'number', 'bigint' eller en enum-typ". Jag förstår att jag har strängar i objektet och att jag inte kan göra aritmetiska operationer med dem. Hur kan jag fixa det?
Svar #1
Typescript gör oss mer eftertänksamma när vi använder aritmetik, om det inte ser logiskt ut vid första anblicken, kommer det att ge det felet.
const sortDescending = (type: keyof Item): void => {
data.sort((a, b) => {
// add types 'as any' -> or a better type like number | boolean
return (a[type] as any) - (b[type] as any);
// (<any>a[type]) can also be an option
});
};
