将类型信息添加到导出的函数

时间:2017-06-11 01:32:32

标签: typescript typescript-typings typescript2.0

我有这个导出功能:

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
}

但我不认为该解决方案有效。

1 个答案:

答案 0 :(得分:1)

您的界面应该有效。实际上,您可以将函数签名本身添加到接口:

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

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