Static variables powered by closures

In the previous section, we learned that when a variable in a closure context is shared between multiple instances of a class, the variable behaves like a static variable.

We will now see how we can create variables and methods that behave like a static variables. Let's start by declaring a TypeScript class named Counter:

class Counter { 
    private static _COUNTER = 0; 
    public increment() { 
        this._changeBy(1); 
    } 
    public decrement() { 
        this._changeBy(-1); 
    } 
    public value() { 
        return Counter._COUNTER; 
    } 
    private _changeBy(val: number) { 
        Counter._COUNTER += val; 
    } 
} 
The preceding example is a TypeScript example, not a JavaScript example.

The preceding class contains a static member named _COUNTER. The TypeScript compiler ...

Get Learning TypeScript 2.x - Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.