Saltar al contenido
webtype.orgwebtype.org

    ↑↓ mover · ⏎ abrir · esc cerrar

    Funciones

    InstanceType

    Lo que produce un constructor cuando lo llamas con new.

    Qué es

    La versión de clase de ReturnType, y existe por separado porque un nombre de clase significa dos cosas: el valor constructor y el tipo de instancia. typeof Foo es el constructor; Foo ya es la instancia. InstanceType importa cuando solo tienes el constructor — pasado como argumento, guardado en un registro, producido por una factoría.

    Ejemplos

    • InstanceType<typeof Session>
      →Session
    • ConstructorParameters<typeof Session>
      →[]
    • InstanceType<typeof Session>['id']
      →string

      Una vez tienes el tipo de instancia, todo lo demás — keyof, acceso indexado, tipos mapeados — se aplica con normalidad.

    Cada tipo resuelto de arriba lo imprimió TypeScript 6.0.3, no se escribió a mano.

    Lo que no hace

    • No acepta el nombre de la clase directamente. InstanceType<Session> es un error, porque Session ya es la instancia — quieres typeof Session.
    • No incluye miembros estáticos. Esos viven en el constructor, que es lo que pasaste, no lo que obtuviste.

    Conclusión

    Un nombre de clase son dos tipos con una sola palabra. typeof C es el constructor, C es la instancia, y casi todo error confuso con genéricos de clase son esos dos intercambiados.