Javascript 在Typescript中将函数作为参数传递:应为0个参数,但得到1.ts
我试图将此Javascript 在Typescript中将函数作为参数传递:应为0个参数,但得到1.ts,javascript,typescript,Javascript,Typescript,我试图将此doSomething函数传递到performAction,但得到的错误是预期为0个参数,但得到1个 type someType = { name: string, id: string } function doSomethingFn(props: someType) { console.log(props.name + " " + props.id); } function performAction(doSomething: () => void) {
doSomething
函数传递到performAction
,但得到的错误是预期为0个参数,但得到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
。如果你脑子里已经有了一个抽象概念,也许可以使用一个接口
function performAction(doSomething: (stuff: { name: string, id: string }) => void) {
doSomething({
name: "foo",
id: "bar"
});
}
上面的
另外,如果代码中的string
是一个变量,则需要更改该变量,因为string
是为该类型保留的。如果您现在不知道如何修复doSomething
的类型,您可以使用函数
类型
更新
对于更新的问题,您需要编写函数性能(doSomething:doSomething:void
您将doSomething作为一个没有参数的函数键入:doSomething:()=>void
{name:string;id:string;}
)。您是最棒的!您的快速回复非常准确。谢谢!