// @flow function* generator(): Iterable<[string, number]> { while (true) { yield ['foo', 123]; } } let tests = [ // good constructors function() { let w = new Map(); let x = new Map(null); let y = new Map([['foo', 123]]); let z = new Map(generator()); let a: Map = new Map(); let b: Map = new Map([['foo', 123]]); let c: Map = new Map(generator()); }, // bad constructors function() { let x = new Map(['foo', 123]); // error let y: Map = new Map([['foo', 123]]); // error }, // get() function(x: Map) { (x.get('foo'): boolean); // error, string | void x.get(123); // error, wrong key type }, ];