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