我想写一些没有参数的回调函数。
有人能告诉我下面的代码在打字稿或javascript中是否正确?
myfunction(completeCallBack, failCallBack) { if (some_condition) { completeCallBack; }else { failCallBack; } }
答案 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中是正确的;
myfunction
未定义为函数。它在javascript中无效。如果它会成为一个类的一部分,它将在打字稿中有效。
除了评估some_condition
之外,您的代码什么都不做。它应该调用回调或返回它们。
我认为这是正确的:
function myfunction(completeCallBack, failCallBack) {
if (some_condition) {
completeCallBack();
}else {
failCallBack();
}
}