Несколько интересных прочтений по ссылкам, которыми вы поделились, спасибо! Принятие ответа так (как минимум с TS 2.8) кажется невозможным :(
от ответственности: следуют чрезмерно упрощенные функции, я знаю, что они бесполезны
function thinger<T>(thing: T): T {
return thing;
}
const thing = thinger({ a: "lol" });
thing.a;
Приведенный выше код переносится просто отлично. Но мне нужно разместить результатthinger<T>
в объект.
interface ThingHolder {
thing: ReturnType<typeof thinger>;
}
const myThingHolder: ThingHolder = {
thing: thinger({ a: "lol" }),
};
Однако я потерял свою информацию типаmyThingHolder.thing.a
не работает
Свойство 'a' не существует для типа '{}'
Поэтому я попробовал следующее
interface ThingHolder<T> {
thing: ReturnType<typeof thinger<T>>;
}
const myThingHolder: ThingHolder<{ a: string }> = {
thing: thinger({ a: "lol" }),
};
Ноtypeof thinger<T>
не является допустимой машинописью.
Как я могу получить тип возврата функции, которая имеет другой тип возврата, основанный на обобщениях?