This code snippet gives TS error:
Cannot find name c
.
I want to call the anonymous function b
but cannot access the argument c
of the anonymous function.
function fn(a: number, b: (c: number) => void) {
b(c);
}
CodePudding user response:
You've misunderstood the params passed. The section (c: number) => void
is a type, it does not mean c is a individual parameter. You can rewrite this as.
function fn(a, b) {
b(c);
}
const c = 1234;
function test(cParam) {
console.log(cParam);
}
fn(1, test.bind(c));
So here, b
is the function test
which takes one input parameter. We can use .bind(c)
to let javascript know that when the b
variable inside function fn
executes, we should take the first paramter as c
.
CodePudding user response:
Well, when you call fn
, you would not pass a function with its argument. You would call it with a reference to the other function. For example:
fn(21, myOtherFunction)
Therefore, something like this works:
const fn = (a: number, b: (c: number) => void) => {
b(a);
}
Just pass what you thought of as c
as your first argument instead.