typescript 如何将一个回调传递给一个函数?

xghobddn  于 2023-02-14  发布在  TypeScript
关注(0)|答案(3)|浏览(282)

我收到一个错误:
src/index.ts:9:18: ERROR: Expected identifier but found "function"

export default {
    chargeCreditCard(function(): Function {
        console.log('chargeCreditCard call complete.');
    });
};

以及:

export const chargeCreditCard = (cb: Function) => {
    const authType = authorizeNet();
    const creditCard = new ApiContracts.CreditCardType();
    creditCard.setCardNumber('4242424242424242');
    creditCard.setExpirationDate('0822');
    creditCard.setCardCode('999');

...
}

我该怎么解决这个问题?
将函数作为参数传递给typescript中的另一个函数时出错。

7qhs6swi

7qhs6swi1#

尽管不太清楚你在做什么,但回答你的核心问题是,这是你如何将回调函数传递给另一个函数的参数。

const chargeCreditCard = (callback: Function) => {
  console.log('chargeCreditCard() function called!');
  callback();
}

如果要调用此函数,请执行以下操作

chargeCreditCard(() => console.log('parameter'))
zsbz8rwp

zsbz8rwp2#

这里我注意到你传递回调函数的方式不对,这是错误的原因,因为你是在参数中定义函数的。
我认为你必须用回调函数的函数体来定义回调函数,然后把它传递给你想调用回调函数的函数,或者使用胖箭头函数。

//define callback
function() callbackfunction {
        console.log('chargeCreditCard call complete.');
    }
//pass as parameter
        chargeCreditCard(callbackfunction);
// call it like
export const chargeCreditCard = (cb: Function) => {
    const authType = authorizeNet();
    const creditCard = new ApiContracts.CreditCardType();
    creditCard.setCardNumber('4242424242424242');
    creditCard.setExpirationDate('0822');
    creditCard.setCardCode('999');

//calling callback
   cb();

...
}

所以,它应该工作正常。

iqxoj9l9

iqxoj9l93#

目前还不完全清楚您要实现的目标是什么

export default {
    chargeCreditCard(function(): Function {
        console.log('chargeCreditCard call complete.');
    });
};

不是有效的语法,应将其替换为

export default {
    chargeCreditCard() {
        console.log('chargeCreditCard call complete.');
    }
};

相关问题