我正在尝试将此doSomething函数传递给performAction,但是我遇到的错误是Expected 0 arguments, but got 1

type someType = {
  name: string,
  id: string
}

function doSomethingFn(props: someType) {
  console.log(props.name + " " + props.id);
}

function performAction(doSomething: () => void) {
  doSomething({
    name: "foo",
    id: "bar"
  });
}

performAction(doSomethingFn);

我是否为Typescript使用正确的语法?

最佳答案

doSomething类型似乎不正确。在类型声明– () => void中,它不包含任何参数,但是稍后您将参数传递给它。
对于这段代码,可以使用以下代码,但是您会更好地知道doSomething的参数及其类型应该是什么。如果您已经有了抽象的想法,则可能使用接口(interface)。

function performAction(doSomething: (stuff: { name: string, id: string }) => void) {
  doSomething({
    name: "foo",
    id: "bar"
  });
}
以上是Demo
另外,如果代码中的string是变量,则需要更改该变量,因为string是为该类型保留的。如果您现在还不能解决doSomething的类型,可以使用Function类型。 Demo

更新
对于您的更新问题,您需要编写function performAction(doSomething: (stuff: someType) => void Demo

关于javascript - 在Typescript : Expected 0 arguments,中将函数作为参数传递,但得到了1.ts,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55385690/

10-15 00:01