亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Typescript中將函數作為參數傳遞:預期為0個參數,但得到1.ts

在Typescript中將函數作為參數傳遞:預期為0個參數,但得到1.ts

慕絲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 


查看完整回答
反對 回復 2021-04-08
?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

您將doSomething鍵入為不帶參數的函數:doSomething: () => void。將其設為dunno doSomething: (arg: SomeInterface) => void(例如,SomeInterface是{name: string; id: string;})。


查看完整回答
反對 回復 2021-04-08
  • 2 回答
  • 0 關注
  • 3301 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號