En su entrada de blog sobre mecanografiado, Mark Rendle está diciendo, que una de las cosas que le gustan de ello es:
Tipificación estructural para las interfaces. Realmente deseo C # podría hacer eso
Que quiso decir con eso?
En su entrada de blog sobre mecanografiado, Mark Rendle está diciendo, que una de las cosas que le gustan de ello es:
Tipificación estructural para las interfaces. Realmente deseo C # podría hacer eso
Que quiso decir con eso?
Básicamente, esto significa que las interfaces se comparan en una base "duck typing" en lugar de sobre una base tipo de identidad.
Considere el siguiente código 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
Y el código de mecanografiado 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
La especificación no cubre esto en mucho detalle, pero las clases tienen "marcas", que significa el mismo código, escrito con clases en lugar de las interfaces, sería tener un error. C # tienen interfaces de marcas, y por lo tanto no se puede convertir implícitamente.
La manera más simple de pensar en ello es que si usted está tratando de una conversión de la interfaz para la interfaz X Y, si X tiene todos los miembros de Y, la conversión tiene éxito, a pesar de que X e Y no podría tener los mismos nombres.
Pensar en.
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
Lo que si decíamos:
interface IButtonEvent { fire: = ...}
interface IMouseButtonEvent { fire: = ...}
...
Mecanografiado permitirá esto, C # no lo hará.
Como mecanografiado tiene como objetivo trabajar bien con el DOM que utiliza al escribir “suelto”, es la única sensata para elegir mecanografiado.
Lo dejo al lector para decidir si les gusta “tipificación estructural” ... ..