Es scheint, dass der Compiler nicht zu kümmern scheint, wie alle diese gültig:
interface Foo1 {
bar(): void;
}
class Foo1Class1 implements Foo1 {
bar =() => { }
}
class Foo1Class2 implements Foo1 {
bar() { }
}
interface Foo2 {
bar:() => void;
}
class Foo2Class1 implements Foo2 {
bar =() => { }
}
class Foo2Class2 implements Foo2 {
bar() { }
}
(code in playground)
Der Grund dafür wahrscheinlich mit, wie das compil zu tun ist, es in javascript:
var Foo1Class1 = (function() {
function Foo1Class1() {
this.bar = function() { };
}
return Foo1Class1;
}());
var Foo1Class2 = (function() {
function Foo1Class2() {
}
Foo1Class2.prototype.bar = function() { };
return Foo1Class2;
}());
In beiden Fällen wird eine Instanz eines dieser Klassen wird eine Eigenschaft mit dem Namen bar
, die eine aufrufbare Funktion ist.
Der Unterschied ist nur, dass in Foo1Class2
die bar
Methode Teil des Prototyps ist, die dann von einer erweiterten Klasse überschrieben werden kann.
Sehr gute Beobachtung und zusätzlich zu der Frage. Eigentlich sehr nützliche Sache zu wissen. –