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

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

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

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

目前这样写会报错
image.png

阅读 1.5k
1 个回答

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

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

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


可以改为

interface Config<Fn extends <P>(params?: P) => void> {
  fn: Fn
}
推荐问题