Получить возвращаемый тип функции без вызова функции

Скажем, у меня есть такая функция в TypeScript:

export const foo = function(){

   return {
     a: 1,
     b: true,
     c: 'bar'
   }

};

если я импортирую эту функцию в другой файл:

import {foo} from './foobar';

Мой вопрос: есть ли способ получить тип возврата foo без фактического вызова foo?


person Alexander Mills    schedule 09.05.2018    source источник
comment
Это работает? schneidenbach.gitbooks.io/typescript- кулинарная книга/   -  person Tyler Sebastian    schedule 10.05.2018
comment
да, это именно то, что я хочу, но выглядит как-то хакерски   -  person Alexander Mills    schedule 10.05.2018
comment
если вы добавите ответ, я обязательно проголосую, но могу подождать, чтобы увидеть, есть ли что-то лучше, прежде чем выбрать его как принятый ответ   -  person Alexander Mills    schedule 10.05.2018
comment
Разве это не просто ReturnType<typeof foo> ?   -  person jcalz    schedule 10.05.2018
comment
где любовь к ОП, когда это необходимо   -  person Alexander Mills    schedule 10.05.2018


Ответы (1)


Теперь это возможно с Typescript 2.8.

let foo = function() {
   return {
     a: 1,
     b: true,
     c: 'bar'
   }
};

type ComplexObj = ReturnType<typeof foo>;  // {a: number, b: boolean, c: string}
person FoundNil    schedule 10.05.2018