網站搜尋

reactjs - Typescript:在匿名函數中找不到名稱 argument


這段程式碼會產生 TS 錯誤:找不到名稱 c。

我想呼叫匿名函數 b,但無法存取匿名函數的參數 c。

function fn(a: number, b: (c: number) => void) {
  b(c);
}

答案#1

你誤解了傳入的參數。部分 (c: number) => void 是一種類型,它並不意味著 c 是單獨的參數。你可以將其重寫為。

function fn(a, b) {
  b(c);
}
const c = 1234;
function test(cParam) {
  console.log(cParam);
}
fn(1, test.bind(c));

所以在這裡,b 是函數 test,它接受一個輸入參數。我們可以使用 .bind(c) 讓 JavaScript 知道,當函數 fn 內的 b 變數執行時,我們應該將第一個參數視為 c。

答案#2

嗯,當你調用 fn 時,你不會傳入一個帶參數的函數。你會傳入對另一個函數的引用。例如:

fn(21, myOtherFunction)

因此,像這樣的東西是可行的:

const fn = (a: number, b: (c: number) => void) => {
  b(a);
}

改為將你認為的 c 當作你的第一個參數傳入。