Was ist „Structural Typing für Schnittstellen“ in Typoskript

stimmen
17

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?

Veröffentlicht am 04/10/2012 um 06:08
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
18

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.

Beantwortet am 04/10/2012 um 06:29
quelle vom benutzer

stimmen
1

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 ... ..

Beantwortet am 12/02/2014 um 16:40
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more