我正在尝试将此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/