Posterior a investigar en varios repositorios y sitios al final descubrimos la solución que te compartiremos a continuación.
Solución:
Los decoradores por diseño no pueden cambiar el tipo de una clase. Esto todavía está en discusión y parece que hasta que se finalice la propuesta del decorador, el equipo no cambiará el comportamiento. Puede usar mixins para esta tarea (lea sobre mixins en ts)
Usando mixins, el código se vería así:
function classDecorator(constructor: T)
return class extends constructor
newProperty = "new property";
hello = "override";
const Greeter = classDecorator(class
property = "property";
hello: string;
constructor(m: string)
this.hello = m;
);
type Greeter = InstanceType // have the instance type just as if we were to declare a class
console.log(new Greeter("world").newProperty);
function classDecorator(constructor: T)
return class extends constructor
newProperty = "new property";
hello = "override";
interface classInterface
newProperty: string;
hello: string;
//trick
interface Greeter extends classInterface ;
@classDecorator
class Greeter
property = "property";
hello: string;
constructor(m: string)
this.hello = m;
const b = new Greeter();
console.log(b.newProperty);
Parece que podemos usar el truco de la interfaz para resolver el problema. Referencia del truco: https://stackoverflow.com/a/52373394/4831179
Si guardas algún recelo o disposición de acrecentar nuestro artículo puedes realizar una interpretación y con deseo lo estudiaremos.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)