Files
test-repo/tests/flow/literal/enum_client.js
T
Christopher Chedeau 3375cfe605 Move tests around (#454)
* new_tests

* move_all_clobbered_tests

* remove all the tests that no longer exist

* re-run flow tests

* Move all the flow tests to tests/flow and prettier to tests/

* Move prettier tests to their own folders

* Add jsfmt files

* run prettier snapshot tests
2017-01-24 14:35:37 -08:00

22 lines
726 B
JavaScript

var APIKeys = require('./enum');
// object that maps "AGE" to "age", "NAME" to "name"
function foo(x: $Keys<typeof APIKeys>) { }
foo("AGE");
foo("LOCATION"); // error
function bar(x: $Keys<{age: number}>) { }
bar(APIKeys.AGE); // not an error: APIKeys.AGE = "age"
bar(APIKeys.NAME); // error: since "NAME" is not in the smaller enum
var object = {};
object[APIKeys.AGE] = 123; // i.e., object.age = 123
object[APIKeys.NAME] = "FOO"; // i.e., object.name = "FOO"
var age:number = object[APIKeys.AGE];
var name:number = object[APIKeys.NAME]; // error: object.name is a string
var indices = { red: 0, green: 1, blue: 2 };
var tuple = [42, "hello", false];
var red:string = tuple[indices.red]; // error: tuple[0] is a number