【发布时间】:2019-06-02 13:18:11
【问题描述】:
我有一个代码,从人类的角度来看是完全可以的。但看起来打字稿类型系统很难理解它。 有没有一种聪明的方法来提示编译器该行中的一切都很好?
const isMustToRun: boolean = isFunc(condition) ? condition() : condition;
代码:
export const noop = function() {
};
export const isFunc = function(obj: any): boolean {
return typeof obj === 'function';
};
/**
*
* @param func funtion to run
* @param condition condition check
* @param args
*/
export const runIf = function f(condition: (Function | boolean), func: Function, ...args: any[]) {
return () => {
const isMustToRun: boolean = isFunc(condition) ? condition() : condition;
return isMustToRun ? func(...args) : noop();
};
};
如果我写了
typeof condition === 'function'
而不是“isFunc”调用,然后它可以工作。但我不想重复代码..
【问题讨论】:
-
您遇到的错误是什么?您的参数类型声明不包括返回值类型。
-
@Pointy 无法调用其类型缺少调用签名的表达式。输入'布尔| Function' 没有兼容的调用签名。
标签: javascript typescript functional-programming