#Porque los traits son más potentes que las interfaces
1 messages · Page 1 of 1 (latest)
Me gustaría saber el porque son mas potentes, eso no lo acabo de entender
Porque los traits son más potentes que las interfaces
Una interface no está limitada a su propia implementación, eso es un error, una interfaz puede usar dentro de sí misma propiedades, métodos y demás, los traits cuando generas una implementación base (es decir cuando el trait tiene un método ya declarado desde el principio) no puede llamar o usar algo fuera de su alcance (constantes o types dentro del mismo, métodos,etc.)
Es decir, si yo hago una implementación base de una interface no me impide usar métodos o valores definidos fuera de ella, eso llega a un error o undefined, no se(creo que existira) si alguna config del tsconfig lo limita pero en el playground de TS me dejaba
Eso que hace? Que el principio de encapsulacion no sea tan potente como en Rust, Rust deja que sus trait sólo usen lo que este declarado en su scope, que quieres usar una propiedad del self? Bueno puedes de diferentes maneras pero la más comun es hacer la implementación propia al tipo que quieres
Podríamos decir que son mas extensibles y reutilizables al poder implementarlas en otras struct y tipos?
El tema de la reutilizacion y extensión es el mismo en ambos, nada mas que uno limita su alcance y propiedades a las que tiene conocimiento a la hora de aplicar la lógica y la otra te permite llamar propiedades no declaradas, igual es entendible que sea así por el tema del interpretado y ser solo un superset de JS
Okey entonces esa seria la única diferencia grande que hay entre los traits y interfaces o hay alguna mas a tomar en cuenta?
Después hay cositas de rendimiento, como un lang trata los dynamic dispatch, etc. Pero lo mas importante son esas cositas, ojo que no digo que las interfaces de TS sean malas, ayudan un montón