Nel suo post sul blog su tipografico, Mark Rendle sta dicendo, che una delle cose che gli piacciono a questo proposito è:
Tipizzazione strutturale per le interfacce. Ho davvero voglia C # potrebbe farlo
Cosa voleva dire con ciò?
Nel suo post sul blog su tipografico, Mark Rendle sta dicendo, che una delle cose che gli piacciono a questo proposito è:
Tipizzazione strutturale per le interfacce. Ho davvero voglia C # potrebbe farlo
Cosa voleva dire con ciò?
Fondamentalmente, ciò significa che le interfacce sono confrontati in base "duck typing" piuttosto che su una base di tipo identità.
Si consideri il seguente codice C #:
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
E il codice dattiloscritto equivalente:
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
Le specifiche non coprire questo in molti dettagli, ma le classi sono "marchi" che significa lo stesso codice, scritto con classi invece di interfacce, sarebbe avere un errore. C # interfacce hanno marchi, e quindi non possono essere implicitamente convertito.
Il modo più semplice per pensare a questo proposito è che se si sta cercando una conversione da interfaccia X per interfacciarsi Y, se X ha tutti i membri della Y, la conversione ha esito positivo, anche se X e Y non potrebbe avere gli stessi nomi.
Pensa a.
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
Che cosa succede se abbiamo detto:
interface IButtonEvent { fire: = ...}
interface IMouseButtonEvent { fire: = ...}
...
Dattiloscritto permetterà questo, C # non lo faranno.
Per quanto dattiloscritto mira a lavorare bene con il DOM che utilizza digitando “loose”, è l'unica ragionevole scegliere per dattiloscritto.
Lascio al lettore decidere se a loro piace “tipizzazione strutturale” ... ..