声明函数声明的类型而不是函数表达式

时间:2017-03-06 07:48:18

标签: node.js typescript typescript2.0

我希望声明一个函数声明的类型,如下所示:

function foo(){


}
但是,我不知道该怎么做。相反,我只是将上面的内容更改为函数表达式,如下所示:

const foo = function(){

};

然后我可以添加类型信息,如下所示:

const foo : ISpecialFunc = function(){

};

foo.x = 'bar';  // etc

有没有办法为一个声明而不是表达式的函数声明类型信息?或者这可能没有意义,或者不应该有意义?

2 个答案:

答案 0 :(得分:1)

这样的事情:

type ISpecialFunc = {
    (): void;
    x: string;
};

const foo = function () {

} as ISpecialFunc;

foo.x = 'bar';

code in playground

修改

我认为你不能用这种方式输入“功能声明” 你可以做的是演员:

function foo() {

};

interface foo  {
    (): void;
    x: string;
};

(foo as foo).x = 'bar';

答案 1 :(得分:0)

设置函数的类型没有意义......而是要键入函数的响应:

function foo(): ResponseTypeHere {

}

如果您正在尝试实际键入该函数,您应该查看可以实现接口的typescripts类

class Foo implements IInterfaceName {

}

const bar = new Foo();