//// [declarationEmitDestructuring1.ts]
function foo([a, b, c]: [string, string, string]): void { }
function far([a, [b], [[c]]]: [number, boolean[], string[][]]): void { }
function bar({a1, b1, c1}: { a1: number, b1: boolean, c1: string }): void { }
function baz({a2, b2: {b1, c1}}: { a2: number, b2: { b1: boolean, c1: string } }): void { } 


//// [declarationEmitDestructuring1.js]
function foo(_a) {
    var a = _a[0], b = _a[1], c = _a[2];
}
function far(_a) {
    var a = _a[0], b = _a[1][0], c = _a[2][0][0];
}
function bar(_a) {
    var a1 = _a.a1, b1 = _a.b1, c1 = _a.c1;
}
function baz(_a) {
    var a2 = _a.a2, _b = _a.b2, b1 = _b.b1, c1 = _b.c1;
}


//// [declarationEmitDestructuring1.d.ts]
declare function foo([a, b, c]: [string, string, string]): void;
declare function far([a, [b], [[c]]]: [number, boolean[], string[][]]): void;
declare function bar({ a1, b1, c1 }: {
    a1: number;
    b1: boolean;
    c1: string;
}): void;
declare function baz({ a2, b2: { b1, c1 } }: {
    a2: number;
    b2: {
        b1: boolean;
        c1: string;
    };
}): void;
