// (arg: { x: any, y: any }) => void function f1({ x, y }) { } f1({ x: 1, y: 1 }); // (arg: { x: any, y?: number }) => void function f2({ x, y = 0 }) { } f2({ x: 1 }); f2({ x: 1, y: 1 }); // (arg: { x?: number, y?: number }) => void function f3({ x = 0, y = 0 }) { } f3({}); f3({ x: 1 }); f3({ y: 1 }); f3({ x: 1, y: 1 }); // (arg?: { x: number, y: number }) => void function f4({ x, y } = { x: 0, y: 0 }) { } f4(); f4({ x: 1, y: 1 }); // (arg?: { x: number, y?: number }) => void function f5({ x, y = 0 } = { x: 0 }) { } f5(); f5({ x: 1 }); f5({ x: 1, y: 1 }); // (arg?: { x?: number, y?: number }) => void function f6({ x = 0, y = 0 } = {}) { } f6(); f6({}); f6({ x: 1 }); f6({ y: 1 }); f6({ x: 1, y: 1 }); // (arg?: { a: { x?: number, y?: number } }) => void function f7({ a: { x = 0, y = 0 } } = { a: {} }) { } f7(); f7({ a: {} }); f7({ a: { x: 1 } }); f7({ a: { y: 1 } }); f7({ a: { x: 1, y: 1 } }); // (arg: [any, any]) => void function g1([x, y]) { } g1([1, 1]); // (arg: [number, number]) => void function g2([x = 0, y = 0]) { } g2([1, 1]); // (arg?: [number, number]) => void function g3([x, y] = [0, 0]) { } g3(); g3([1, 1]); // (arg?: [number, number]) => void function g4([x, y = 0] = [0]) { } g4(); g4([1, 1]); // (arg?: [number, number]) => void function g5([x = 0, y = 0] = []) { } g5(); g5([1, 1]);