Grundsätzlich bedeutet dies, dass Schnittstellen auf der Basis einer "Entschlüsselung" und nicht auf Basis einer Typidentität verglichen werden.
Betrachten Sie das folgende 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 dies nicht in viel Detail abdecken, aber Klassen "Marken", was bedeutet, die Derselbe Code, geschrieben mit Klassen anstelle von Schnittstellen, würde haben einen Fehler. C# -Schnittstellen haben Marken und können daher nicht implizit konvertiert werden. Der einfachste Weg, darüber nachzudenken, ist, dass, wenn Sie eine Konvertierung von Schnittstelle X zu Schnittstelle Y versuchen, wenn X alle Mitglieder von Y hat, die Konvertierung erfolgreich ist, obwohl X und Y möglicherweise nicht das Gleiche haben Namen.
Ich habe dies kurz lesen http://stackoverflow.com/questions/2831175/does-c-sharp- have-an-equivalent-to-scalas-structural-typing, das es ein wenig verdeutlicht, aber immer noch gerne wissen möchte, wie es in TypeScript verwendet wird –