Typescript prüft nicht die von den Interfaces deklarierten Typen von Funktionsargumenten

Ich habe beim Kompilieren des folgenden Codes ZWEI Fehler erwartet, aber Typoskript kompiliert ihn ohne Fehler.

interface IFoo{
    Bar(callback: (arg:string) => void):void;
}

class Foo implements IFoo {
    pub,lic Bar(callback: () => void):void{
        callback();
    }
}

var foo: IFoo;
foo = new Foo();
foo.Bar(() => {
    console.log("Hi");
})

Erwarteter Fehler 1: IFoo.Bar erfordert ein Funktionsargument, das selbst ein Zeichenfolgenargument akzeptiert. Wenn Foo IFoo implementiert, wird Foo.Bar deklariert, ein Funktionsargument mit NO-Argumenten zu verwenden. Ich würde erwarten, dass dies ein Tippfehler ist.

Erwarteter Fehler 2: foo ist vom Typ IFoo. foo.Bar wird mit einem Funktionsargument aufgerufen, das entgegen der Definition von Bar in IFoo keine Argumente akzeptiert. Ich würde erwarten, dass dies ein Tippfehler ist.

Wenn Sie also eine konkrete Implementierung einer Schnittstellenmethode deklarieren und die Schnittstellenmethode aufrufen, scheint der Typ der Funktionssignatur nicht erzwungen zu werden.

Es ist ein Missverständnis, wie Typoskript die Typüberprüfung von Funktionsargumenten handhabt, die von einer Schnittstelle deklariert wurden. Kann jemand erklären, warum dies ohne Fehler kompiliert?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage