满口金牙 2023-03-18 21:46 采纳率: 91.5%
浏览 61
已结题

typescript 函数参数类型不兼容请教

重点:add:(val:{[key:string]:any})=>void // 这里的类型不能固定, 因为 add,要接受不同的函数

interface ParamsType {
  name:string,
  age:number
}

interface HandleType {
  add:(val:{[key:string]:any})=>void        // 这里的类型不能固定, 因为 add,要接受不同的函数
}

function testFun(val:ParamsType){    // testFun 函数的参数类型是固定的

}

const  itemHandle:HandleType = {
  add:testFun // 这里会报错,参数不兼容, 怎么解决
}
  • 写回答

5条回答 默认 最新

  • dahe0825 2023-03-18 21:49
    关注

    参考GPT和自己的思路,在这个例子中,testFun函数的参数类型是ParamsType,而itemHandle对象的add方法参数类型是{[key:string]:any}。因此,这两个类型是不兼容的。为了解决这个问题,你可以更改HandleType的定义,使其接受一个参数类型为ParamsType的函数。这样做可以保证testFun符合HandleType的定义。以下是修改后的代码:

    interface ParamsType {
      name:string,
      age:number
    }
    
    interface HandleType {
      add:(val:ParamsType)=>void        // 将参数类型固定为 ParamsType
    }
    
    function testFun(val:ParamsType){    // testFun 函数的参数类型是固定的
    }
    
    const itemHandle:HandleType = {
      add:testFun // 现在不会报错了
    }
    

    现在testFun的参数类型与HandleType的add方法所需的参数类型相匹配,因此不会出现类型不兼容的问题。

    评论

报告相同问题?

问题事件

  • 系统已结题 3月26日
  • 修改了问题 3月18日
  • 创建了问题 3月18日

悬赏问题

  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的