Firmas de tipo TypeScript para funciones con conteos de argumentos variables

Tengo problemas para definir interfaces con miembros de funciones que aceptan cantidades variables de argumentos. Tome el siguiente objeto literal como ejemplo:

var obj = {
    func: () => {
        for(var i = 0; i < arguments.length; i++) {
            console.log(arguments[i]);
        }
    }
};

Me gustaría poder definir una interfaz como:

interface IExample {
    func: ( ??? ) => void;
}

Para que el siguiente código pueda compilar sin error:

var test = (o: IExample) {
    o.func("a");
    o.func("a", "b");
    o.func("a", "b", "c");
    ...
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta