Sry for my stupid question, but i can`t search answer for my promlem. TS7053: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ width: number; height: number; title: string; }'
let menu:{width:number; height:number; title:string} = {
width: 200,
height: 300,
title: 'My menu',
}
function multiplyNumeric(menu:{width:number; height: number; title: string}):void {
for (let k in menu){
if (typeof menu[k] === "number"){
menu[k] = Number(menu[k]) * 2;
}
}
}
multiplyNumeric(menu);
CodePudding user response:
TypeScript doesn't know what k means in the context of the for loop inside the multiplyNumeric function.
Since the type of Menu is strictly defined, and you are determining the value of Menu at run-time, you will need to add an additional generic to prop type to Menu, like this:
type Menu = {
width: number;
height: number;
title: string;
[prop: string]: number | string;
};
CodePudding user response:
On your multiplyNumeric function the parameter 'menu' has invalid data type. You cannot set like that. From what i understand you want your menu parameter to be an object with three properties
{
width:number;
height: number;
title: string
}
You need to define an interface to do the job.
inteface menuObj {
width:number;
height: number;
title: string;
}
And then do something like this:
function multiplyNumeric(menu: menuObj)
