TypeScript传递回调函数报错:Expected identifier but found "function"
错误原因与修复方案
错误根源
你写的代码里,试图在对象字面量中直接执行函数调用,这不符合JavaScript/TypeScript的对象语法规则。对象字面量要求内部是键: 值的键值对结构,而你直接写了chargeCreditCard(function(){...});这样的执行语句,解析器会误以为你要定义对象属性,但找不到对应的属性名(标识符),所以抛出Expected identifier but found "function"错误。
修复方案
根据你的实际需求,有两种常见的修复方式:
方式1:直接调用函数(无需包裹对象)
如果你的目的只是调用chargeCreditCard,直接去掉多余的对象包裹即可:
// 直接调用函数 chargeCreditCard(() => { console.log('chargeCreditCard call complete.'); }); // 如果需要导出函数调用的返回值,写成: // export default chargeCreditCard(() => { // console.log('chargeCreditCard call complete.'); // });
方式2:在导出对象中封装方法
如果你的目的是把调用逻辑封装成导出对象的一个方法,要遵循对象方法的语法规则,给方法指定一个标识符:
export default { // 定义对象方法,命名一个合法标识符 triggerCharge() { chargeCreditCard(() => { console.log('chargeCreditCard call complete.'); }); } };
额外说明:原代码里function(): Function的写法冗余,用箭头函数() => {...}更简洁,TypeScript会自动推断回调类型,完全符合chargeCreditCard参数要求的Function类型。
内容的提问来源于stack exchange,提问作者chovy
相关产品推荐
相关产品推荐

