ts 这样的函数类型 该怎么写呢?

interface Config<P> {
  fn: (params?: P) => void // 想让这个函数支持:传不传参数都行
}

const config1: Config = {
  fn: () => {
  }
}

const config2: Config = {
  fn: (a) => {
  }
}

目前这样写会报错
image.png

阅读 1.4k
1 个回答

知道了,之前混淆了函数的定义和调用,

Config 要求的是传一个[参数可选的函数],
表示这个函数在将来被调用的时候,参数可传可不传,

而不是代表可以传 [无参函数] 或 [参数必填的函数]


可以改为

interface Config<Fn extends <P>(params?: P) => void> {
  fn: Fn
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题