TypeScript: typ powrotu void przekonwertowany na dowolny typ?

Wydaje się, że nie jestem w stanie zrozumieć, dlaczego poniższy kod nie powoduje błędu:

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

Wyraźnie stwierdzam, że typ powinien być tablicą funkcji, które zwracająvoid, jednak pcham tam funkcję, która zwraca astring a mimo to kompilator nie narzeka. Jeśli zmienię definicjęrg do

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

Kompilator zaczyna narzekać.

Czy jest to błąd, czy to, jak powinien działać typ powrotu pustki (tzn. Wszystko idzie, jeślivoid jest używany, co czyni go tym samym co typ powrotuany)?