TypeScript: tipo de retorno void convertido para qualquer tipo?

Eu pareço não ser capaz de compreender porque o seguinte código não gera erro:

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

Eu afirmo claramente que o tipo deve ser uma matriz de funções que retornamvoid, no entanto eu empurro lá uma função que retorna umstring e ainda o compilador não reclama. Se eu mudar a definição derg para

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

O compilador começa a reclamar.

Isso é um bug ou é como o tipo de retorno void deve funcionar (ou seja, vale tudo sevoid é usado, basicamente, tornando-o igual ao tipo de retornoany)