Добавить информацию о типе в экспортируемую функцию

У меня есть эта экспортированная функция:

export function foo(){

   setTimeout(function(){
     foo.x = y;                // add a property to foo fn
   },3000);

}

как я могу объявить с помощью TypeScript, что у foo может быть свойство с именем «x»?

мое единственное предположение было бы сделать что-то вроде этого:

   export const foo : FooType = function(){

       setTimeout(function(){
         foo.x = y;                // add a property to foo fn
       },3000);

    }

где FooType — это такой интерфейс, как:

interface FooType {
   foo?: YType
}

но я не думаю, что это решение работает.


person Alexander Mills    schedule 11.06.2017    source источник


Ответы (1)


Ваш интерфейс должен работать. На самом деле вы можете добавить саму сигнатуру функции в интерфейс:

interface FooType {
    (): void;
    x?: string
}

export const foo: FooType = function () {
    setTimeout(function () {
        foo.x = "some value";
    }, 3000);
}
person Saravana    schedule 11.06.2017