如何在Typescript中声明NAMED函数的接口?

时间:2016-05-25 20:10:42

标签: typescript

我可以定义一个函数的接口:

interface Handler {
  (state: IState, action: IAction): IState;
}

然后我可以声明一个满足接口的函数:

let selectRegimen: Handler = function(state, action) {
  return state;
};

但是命名(如在,而不是匿名)函数呢?显然,我可以这样做:

let selectRegimen: Handler = function selectRegiment(state, action) {
  return state;
};

...但是这种语法让人觉得奇怪。有没有更好的方法来解决这个问题?

2 个答案:

答案 0 :(得分:2)

没有办法在命名函数表达式中强制使用特定名称,就像没有办法强制使用特定变量名来赋值函数一样。

如果您发现更适合您的口味,您可以使用类型别名而不是界面,那么您正在做的很好:

type Handler = (state: IState, action: IAction) => IState;

答案 1 :(得分:1)

FWIW,我希望通过实现一个接口来在类中强制命名函数。

为此,您可以:

interface Handler {
    selectRegimen: (state: IState, action: IAction): IState
}

class MyHandler implements Handler {
    selectRegiment (state: IState, action: IAction) {
        let newState: IState
        // ...
        return newState
    }
}