我可以定义一个函数的接口:
interface Handler {
(state: IState, action: IAction): IState;
}
然后我可以声明一个满足接口的函数:
let selectRegimen: Handler = function(state, action) {
return state;
};
但是命名(如在,而不是匿名)函数呢?显然,我可以这样做:
let selectRegimen: Handler = function selectRegiment(state, action) {
return state;
};
...但是这种语法让人觉得奇怪。有没有更好的方法来解决这个问题?
答案 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
}
}