type genericas generic clases typescript typescript-generics

genericas - typescript interface generic



¿Puede especificar múltiples restricciones de tipo para TypeScript Generics? (3)

En mecanografiado que admite tipos de unión, es posible

interface Example<T extends MyClass | OtherClass> { }

Tengo una interfaz genérica como este ejemplo con una restricción de tipo único:

export interface IExample<T extends MyClass> { getById(id: number): T; }

¿Es posible especificar múltiples restricciones de tipo en lugar de solo una?


Ref el comentario sobre una interfaz derivada de una clase ... ¿qué tiene un nombre?

Encontré esto en la sección 3.5 de la especificación 0.9.0:

Las declaraciones de interfaz solo introducen tipos con nombre, mientras que las declaraciones de clase introducen tipos con nombre y funciones de constructor que crean instancias de implementaciones de esos tipos nombrados. Los tipos nombrados introducidos por declaraciones de clase y de interfaz tienen solo diferencias menores (las clases no pueden declarar miembros opcionales y las interfaces no pueden declarar miembros privados) y en la mayoría de los contextos son intercambiables. En particular, las declaraciones de clase con solo miembros públicos introducen tipos con nombre que funcionan exactamente como los creados por declaraciones de interfaz.


Una solución para esto sería usar una super-interfaz (que también responde a la pregunta "¿por qué permitiría que una interfaz herede de una clase?").

interface ISuperInterface extends MyClass, OtherClass { } export interface IExample<T extends ISuperInterface> { getById(id: number): T; }