How to use closure in TypeScript

4 Answers

0 votes
function makeAdder(x: number): (y: number) => number {
    // This inner function forms a closure.
    // It "remembers" the value of x even after makeAdder returns.
    return function (y: number): number {
        return x + y;
    };
}

const add10: (y: number) => number = makeAdder(10);
const result: number = add10(20);

console.log(result);



/*
run:

30

*/

 



answered Jun 2 by avibootz
0 votes
// Closures capture variables by reference

let counter: number = 0;

// Closure capturing "counter"
const inc: () => void = () => {
    counter++;
};

inc();
inc();

console.log(counter);



/*
run:

2

*/

 



answered Jun 2 by avibootz
0 votes
// Closures inside loops

const funcs: Array<() => void> = [];

for (let i: number = 0; i < 3; i++) {
    funcs.push(() => console.log(i)); // each closure gets its own i
}

funcs[0]();
funcs[1]();
funcs[2]();



/*
run:

0
1
2

*/

 



answered Jun 2 by avibootz
0 votes
// Closures with arrow functions

const factor: number = 3;

const multiply: (a: number, b: number) => number =
    (a: number, b: number): number => (a + b) * factor;

console.log(multiply(5, 5));


/*
run:

30

*/

 



answered Jun 2 by avibootz

Related questions

4 answers 38 views
4 answers 50 views
4 answers 42 views
5 answers 49 views
4 answers 43 views
3 answers 40 views
...