TypeScript: void return type convertido a cualquier tipo?

Parece que no puedo comprender por qué el siguiente código no genera un error:

var rg: {(): void;}[] = [];
rg.push(function():string {return "";})

Indico claramente que el tipo debe ser una matriz de funciones que devuelvenvoidSin embargo, presiono allí una función que devuelve unstring Y sin embargo el compilador no se queja. Si cambio la definición derg a

var rg: {():number;}[] = [];

El compilador comienza a quejarse.

¿Se trata de un error o es cómo se supone que funciona el tipo de retorno nulo (es decir, todo vale sivoid Se utiliza, básicamente, haciendo que sea el mismo que el tipo de retornoany)?