//// [objectLiteralArraySpecialization.ts] declare function create(initialValues?: T[]): MyArrayWrapper; interface MyArrayWrapper { constructor(initialItems?: T[]); doSomething(predicate: (x: T, y: T) => boolean): void; } var thing = create([ { name: "bob", id: 24 }, { name: "doug", id: 32 } ]); // should not error thing.doSomething((x, y) => x.name === "bob"); // should not error //// [objectLiteralArraySpecialization.js] var thing = create([{ name: "bob", id: 24 }, { name: "doug", id: 32 }]); // should not error thing.doSomething(function (x, y) { return x.name === "bob"; });