Funciones
Instance Type
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>→SessionConstructorParameters<typeof Session>→[]InstanceType<typeof Session>['id']→stringUna 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, porqueSessionya es la instancia — quierestypeof 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.

