我想写一些没有参数的回调函数。
谁能告诉我下面的代码在 typescript 或 javascript 中是正确的吗?
myfunction(completeCallBack, failCallBack) { if (some_condition) { completeCallBack; }else { failCallBack; } }
最佳答案
应该是:
function myfunction(completeCallBack, failCallBack) {
if (some_condition) {
completeCallBack();
} else {
failCallBack();
}
}
您缺少的是:()
。
如果您不包含它,那么该函数将不会执行。
例如:
function fn(): number {
return 10;
}
let a = fn; // typeof a is () => number
let b = fn(); // typeof b is number
编辑
如果您的函数需要两个没有参数的函数,那么它不应该传递给需要参数的函数。
您可以使用 typescript 来检查:
type NoParamsCallback = () => void;
function myfunction(completeCallBack: NoParamsCallback, failCallBack: NoParamsCallback) {
if (some_condition) {
completeCallBack();
} else {
failCallBack();
}
}
然后,如果你有一个带有 args 的函数,但无论如何你都想传递它,那么你可以使用 Function.prototype.bind功能:
function logNumber(num: number): void {
console.log(`this is the number: ${ num }`);
}
myfunction(logNumber.bind(10), () => {});
关于javascript - 没有参数的 typescript 回调函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38875614/