error TS5107: Option 'target=ES5' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.


!!! error TS5107: Option 'target=ES5' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.
==== newWithSpreadES5.ts (0 errors) ====
    function f(x: number, y: number, ...z: string[]) {
    }
    
    function f2(...x: string[]) {}
    
    interface A {
        f: {
            new (x: number, y: number, ...z: string[]);
        }
    }
    
    class B {
        constructor(x: number, y: number, ...z: string[]) {}
    }
    
    interface C {
        "a-b": typeof B;
    }
    
    interface D {
        1: typeof B;
    }
    
    var a: string[];
    var b: A;
    var c: C;
    var d: A[];
    var e: { [key: string]: A };
    var g: C[];
    var h: { [key: string]: C };
    var i: C[][];
    
    // Basic expression
    new f(1, 2, "string");
    new f(1, 2, ...a);
    new f(1, 2, ...a, "string");
    
    // Multiple spreads arguments
    new f2(...a, ...a);
    new f(1 ,2, ...a, ...a);
    
    // Call expression
    new f(1, 2, "string")();
    new f(1, 2, ...a)();
    new f(1, 2, ...a, "string")();
    
    // Property access expression
    new b.f(1, 2, "string");
    new b.f(1, 2, ...a);
    new b.f(1, 2, ...a, "string"); 
    
    // Parenthesised expression
    new (b.f)(1, 2, "string");
    new (b.f)(1, 2, ...a);
    new (b.f)(1, 2, ...a, "string"); 
    
    // Element access expression
    new d[1].f(1, 2, "string");
    new d[1].f(1, 2, ...a);
    new d[1].f(1, 2, ...a, "string");
    
    // Element access expression with a punctuated key
    new e["a-b"].f(1, 2, "string");
    new e["a-b"].f(1, 2, ...a);
    new e["a-b"].f(1, 2, ...a, "string");
    
    // Basic expression
    new B(1, 2, "string");
    new B(1, 2, ...a);
    new B(1, 2, ...a, "string");
    
    // Property access expression
    new c["a-b"](1, 2, "string");
    new c["a-b"](1, 2, ...a);
    new c["a-b"](1, 2, ...a, "string");
    
    // Parenthesised expression
    new (c["a-b"])(1, 2, "string");
    new (c["a-b"])(1, 2, ...a);
    new (c["a-b"])(1, 2, ...a, "string");
    
    // Element access expression
    new g[1]["a-b"](1, 2, "string");
    new g[1]["a-b"](1, 2, ...a);
    new g[1]["a-b"](1, 2, ...a, "string");
    
    // Element access expression with a punctuated key
    new h["a-b"]["a-b"](1, 2, "string");
    new h["a-b"]["a-b"](1, 2, ...a);
    new h["a-b"]["a-b"](1, 2, ...a, "string");
    
    // Element access expression with a number
    new i["a-b"][1](1, 2, "string");
    new i["a-b"][1](1, 2, ...a);
    new i["a-b"][1](1, 2, ...a, "string");