¿Cómo extraigo un tipo de una matriz en mecanografiado?

¿Hay alguna manera de declarar un tipo en mecanografiado que 'extraiga' el tipo interno de una matriz?

Ejemplo:

Digamos que ya tengo algo como esto en mi base de código:

export interface Cache {
    events: Event[],
    users: User[]
}
type CacheType = Event[] | User[];

//or maybe: 
//   type TypeOfProperty = T[keyof T];
//   type CacheType = TypeOfProperty<Cache>; 

Lo que quiero es algo que sea equivalente a esto:

type InnerCacheType = Event | User;

Pero sin volver a escribirlo manualmente cada vez que agrego algo aCache oCacheType

¿Es esto posible en Typecript?

Respuestas a la pregunta(3)

Su respuesta a la pregunta