慕絲7291255
2021-03-29 11:12:48
我正在嘗試將此doSomething函數傳遞給performAction,但是我遇到的錯誤是Expected 0 arguments, but got 1type 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使用正確的語法?
2 回答

胡說叔叔
TA貢獻1804條經驗 獲得超8個贊
該doSomething類型似乎不正確。在類型聲明中-() => void它不接受任何參數,但是稍后您將參數傳遞給它。
對于這段代碼,可以使用以下代碼,但是您會更好地知道的參數及其類型應該是什么doSomething。如果您已經有了抽象的想法,則可能使用接口。
function performAction(doSomething: (stuff: { name: string, id: string }) => void) {
doSomething({
name: "foo",
id: "bar"
});
}
另外,如果string您的代碼中有一個變量,則需要更改該變量,因為該變量string是為該類型保留的。如果您現在還不能解決該問題,doSomething可以使用該Function類型。
更新
對于更新的問題,您需要編寫function performAction(doSomething: (stuff: someType) => void

互換的青春
TA貢獻1797條經驗 獲得超6個贊
您將doSomething鍵入為不帶參數的函數:doSomething: () => void
。將其設為dunno doSomething: (arg: SomeInterface) => void
(例如,SomeInterface是{name: string; id: string;}
)。
添加回答
舉報
0/150
提交
取消