【问题标题】:TS7053: Element implicitly has an 'any' typeTS7053:元素隐式具有“任何”类型
【发布时间】:2022-01-26 04:03:14
【问题描述】:

对不起我的愚蠢问题,但我无法为我的问题搜索答案。 TS7053:元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型“{宽度:数字;高度:数字;标题:字符串; }'

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);

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

    TypeScript 不知道 kmultiplyNumeric 函数内的 for 循环上下文中的含义。

    由于Menu 的类型是严格定义的,并且您在运行时确定Menu 的值,因此您需要向Menu 添加一个额外的通用属性类型,如下所示:

    type Menu = {
      width: number;
      height: number;
      title: string;
      [prop: string]: number | string;
    };
    

    【讨论】:

      【解决方案2】:

      在您的 multiplyNumeric 函数中,参数“menu”的数据类型无效。你不能这样设置。据我了解,您希望您的菜单参数是具有三个属性的对象

      {
        width:number; 
        height: number; 
        title: string
      }
      

      您需要定义一个接口来完成这项工作。

      inteface menuObj {
          width:number; 
          height: number; 
          title: string;
      }
      

      然后做这样的事情:

      function multiplyNumeric(menu: menuObj)
      

      【讨论】:

        猜你喜欢
        • 2019-11-11
        • 2021-10-19
        • 2021-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-28
        • 2021-08-16
        相关资源
        最近更新 更多