In seinem Blog - Post über Typoskript, Mark Rendle sagt, dass eines der Dinge , die er mag daran ist:
„Strukturelle Typisierung für Schnittstellen. Ich wünschte wirklich, C # tun könnte, dass“
Was hat er damit gemeint?
In seinem Blog - Post über Typoskript, Mark Rendle sagt, dass eines der Dinge , die er mag daran ist:
„Strukturelle Typisierung für Schnittstellen. Ich wünschte wirklich, C # tun könnte, dass“
Was hat er damit gemeint?
Im Grunde bedeutet es, dass Schnittstellen auf einer „Duck Typing“ Basis verglichen werden und nicht auf einer Art Identitätsbasis.
Betrachten Sie den folgenden C # -Code:
interface X1 { string Name { get; } }
interface X2 { string Name { get; } }
// ... later
X1 a = null;
X2 b = a; // Compile error! X1 and X2 are not compatible
Und das Äquivalent Typoskript Code:
interface X1 { name: string; }
interface X2 { name: string; }
var a: X1 = null;
var b: X2 = a; // OK: X1 and X2 have the same members, so they are compatible
Die Spezifikation lässt dies nicht sehr detailliert, aber Klassen haben „Marken“ , die den gleichen Code bedeutet, mit Klassen geschrieben anstelle von Schnittstellen, würde einen Fehler haben. C # Schnittstellen Marken zu tun haben und somit nicht implizit konvertiert werden können.
Der einfachste Weg, um darüber zu denken, dass, wenn Sie eine Konvertierung von der Schnittstelle X sind versucht, Y zu Schnittstelle, wenn X alle Mitglieder von Y hat, gelingt die Umsetzung, auch wenn X und Y vielleicht nicht den gleichen Namen haben.
Nachdenken über.
class Employee { fire: = ..., otherMethod: = ...}
class Missile { fire: = ..., yetMoreMethod: = ...}
interface ICanFire { fire: = ...}
val e = new Employee
val m = new Missile
ICanFire bigGuy = if(util.Random.nextBoolean) e else m
bigGuy.fire
Was passiert, wenn wir sagten:
interface IButtonEvent { fire: = ...}
interface IMouseButtonEvent { fire: = ...}
...
Typoskript dies ermöglichen wird, wird C # nicht.
Als Typoskript zielt darauf ab, mit dem DOM funktionieren gut, die „lose“ Typisierung verwendet, ist es die einzige vernünftige für Typoskript wählen.
Ich überlasse es dem Leser, zu entscheiden, ob sie „Structural typing“ mögen ... ..