Digamos que tengo una clase A mecanografiada y una clase B que extends A
class A { static a(): number { return 10; } a_(): number { return 10; } } class B extends A { static b(): number { return 20; } b_(): number { return 20; } }Me gustaría definir una interfaz mecanografiada genérica, así:
interface ClassAndInstance<C extends A> { c: ClassType<C> i: C } (Nota: ClassType aquí se refiere a la clase (no instancia) del tipo genérico).
Ahora, si tengo una instancia de ClassAndInstance
ci: ClassAndInstance<B>;Quiero poder llamar tanto a la clase como a los campos de instancia de B, así:
ci.ca(); // 10 ci.cb(); // 20 ci.i.a_(); // 10 ci.i.b_(); // 20; ¿Cómo definiría ClassType para lograr esto de una manera segura?
Elegí una interfaz para definir la semántica detrás de ClassAndInstance , pero si hay alguna otra forma de lograr esto, también funcionaría.