typescript回调函数没有参数?

时间:2016-08-10 14:00:54

标签: javascript typescript

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

有人能告诉我下面的代码在打字稿或javascript中是否正确?


myfunction(completeCallBack, failCallBack) {
     if (some_condition) {
         completeCallBack;
     }else {
         failCallBack;
     }
}

2 个答案:

答案 0 :(得分:2)

应该是:

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

修改

如果你的函数需要两个没有args的函数,那么就不应该传递期望args的函数 您可以使用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), () => {});

答案 1 :(得分:1)

Typescript是javascript的超集。所以,如果它在javascript中是正确的,那肯定在typescript中是正确的;

  1. myfunction未定义为函数。它在javascript中无效。如果它会成为一个类的一部分,它将在打字稿中有效。

  2. 除了评估some_condition之外,您的代码什么都不做。它应该调用回调或返回它们。

  3. 我认为这是正确的:

    function myfunction(completeCallBack, failCallBack) {
         if (some_condition) {
             completeCallBack();
         }else {
             failCallBack();
         }
    }