javascript - 没有参数的 typescript 回调函数?

标签 javascript typescript

我想写一些没有参数的回调函数。

谁能告诉我下面的代码在 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/

相关文章:

javascript - 如何使用在 getScript 回调函数内生成的 URL 打开一个新窗口,并避免弹出窗口拦截器?

javascript - Highcharts : Two marker symbol for the same point

javascript - 如何从父 View 调用 subview 方法?

javascript - 测试变量类型或抛出 TypeScript 的函数?

typescript - jest typescript - 模拟日期构造函数

TypeScript 构建错误 : Build:An async function or method in ES5/ES3 requires the 'Promise' constructor

angular - 如何直接转到选项卡

asp.net - 如何从客户端 (Javascript) 重新排序下拉列表控件,例如 NetFlix 队列

javascript - 具有改变 redux 状态的原型(prototype)的数组

typescript - 如何使用 Jest 模拟 DynamoDb Datamapper 返回的 QueryIterator?