String enums w TypeScript

Jak typ danych może wyrazić dokładnie 1000 słów? enum String.

String może zawierać wszystkie słowa świata. Kiedy chcemy ograniczyć się tylko do kilku w TypeScirpt mogliśmy wykorzystać union types

type direction = 'North' | 'South' | 'West' | 'East';

function fun(a: direction) {
    console.log(a);
}

fun('North'); // OK
fun('foobar'); //Error: Argument of type 'foobar' is not assignable to parameter of type 'direction'.

Teraz (od wersji 2.4 – która powinna się wyjść lada dzień) mamy do dyspozycji możliwość tworzenia typów wyliczeniowych, które jako wartość mogą przyjmować łańcuchy znaków.

enum MyEnum {
    Foo = "foo",
    Bar = 'trunk',
    Number = 1,
}

function fun(a: MyEnum) {
    console.log(a);
}

fun(MyEnum.Foo); // OK
fun(MyEnum.Number); // OK