//// [declarationEmitDestructuringWithOptionalBindingParameters.ts] function foo([x,y,z]?: [string, number, boolean]) { } function foo1( { x, y, z }?: { x: string; y: number; z: boolean }) { } //// [declarationEmitDestructuringWithOptionalBindingParameters.js] function foo(_a) { var x = _a[0], y = _a[1], z = _a[2]; } function foo1(_a) { var x = _a.x, y = _a.y, z = _a.z; } //// [declarationEmitDestructuringWithOptionalBindingParameters.d.ts] declare function foo([x, y, z]?: [string, number, boolean]): void; declare function foo1({x, y, z}?: { x: string; y: number; z: boolean; }): void;