Obtener el tipo de retorno de una función que usa genéricos

Descargo de responsabilidad: siguen funciones demasiado simplificadas, soy consciente de que son inútiles

function thinger<T>(thing: T): T {
    return thing;
}

const thing = thinger({ a: "lol" });

thing.a;

El código anterior se transpila muy bien. Pero necesito colocar el resultado dethinger<T>&nbsp;en un objeto

interface ThingHolder {
    thing: ReturnType<typeof thinger>;
}

const myThingHolder: ThingHolder = {
    thing: thinger({ a: "lol" }),
};

Sin embargo, he perdido mi información de tipo, así quemyThingHolder.thing.a&nbsp;No funciona

La propiedad 'a' no existe en el tipo '{}'

Así que probé lo siguiente

interface ThingHolder<T> {
    thing: ReturnType<typeof thinger<T>>;
}

const myThingHolder: ThingHolder<{ a: string }> = {
    thing: thinger({ a: "lol" }),
};

Perotypeof thinger<T>&nbsp;no es mecanografiado válido

¿Cómo puedo obtener el tipo de retorno de una función que tiene un tipo de retorno diferente basado en genéricos?