如何将异步函数添加到类型def文件中?

时间:2018-01-25 16:53:38

标签: typescript

我正在尝试为async-busboy添加异步函数定义;

我创建了一个文件" async-busboy.d.ts"

declare module 'async-busboy' {
    export default async function asyncBusby
        (subString: any): Promise<any>;
}

但是这给了我错误:&#34;错误TS1040:&#39; async&#39;修饰符不能在环境上下文中使用。&#34;

如何编写异步函数defs?
感谢

EDIT 感谢@Titian Cernicova-Dragomir和@Aaron的回答。但是,当我打电话给它时,我得到一个错误

const dddd = await asyncBusboy(22);
[ts] 'await' expression is only allowed within an async function.

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

所有你需要的是:

declare module 'async-busboy' {
    export default function asyncBusby
        (subString: any): Promise<any>;
}

它返回Promise这一事实使它成为异步。消费者现在需要await any值。 async修饰符用于扩充函数体实现(它返回的内容包含在一个promise中),这在type-def中没有,这就是为什么async不是允许在类型def。

答案 1 :(得分:0)

声明中不需要async修饰符。 async修饰符指示编译器发出允许使用await的代码。从消费者的角度来看,重要的部分是它返回Promise而不是如何在函数体中实现异步。您可以考虑async函数的实现细节。

您的问题是致电网站问题,您需要将asyncBusby称为async的功能标记为:{/ 1}:

async function foo (){
    const dddd = await asyncBusby(22);
    console.log(dddd);
}