Interfejs funkcji maszynopisów

Dlaczego maszynopis nie ostrzega mnie, że funkcja, którą definiuję, nie pasuje do deklaracji interfejsu, ale ostrzega mnie, gdy próbuję wywołać funkcję.

interface IFormatter {
    (data: string, toUpper : boolean): string;
};

//Compiler does not flag error here.
var upperCaseFormatter: IFormatter = function (data: string) {
    return data.toUpperCase();
}  

upperCaseFormatter("test"); //but does flag an error here.

questionAnswers(1)

yourAnswerToTheQuestion