typescript 接口申明函数类型错误

typescript 接口申明函数类型错误

interface SearchFunc {
    (key: string | number | symbol, object: object): key is keyof object
  }
  
  let mySearch: SearchFunc = function(key, object) {
    return key in object;
  }

image.png

image.png

image.png

在vue3的为 globalProperties 扩充类型中也有问题

image.png

image.png

阅读 2k
2 个回答

因为 类型谓词 和 boolean 在 ts 里是不兼容的,boolean 并没有类型保护的作用,你函数的返回值需要显式地指定为类型谓词这个函数签名才能匹配得上:

interface SearchFunc {
  (key: string | number | symbol, object: object): key is keyof object
}

const mySearch: SearchFunc = (key, object): key is keyof object => {
  return key in object
}

vim

这样可以,具体的原理我也不太懂

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题