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

标签 typescript

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

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

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

但这给了我错误:“错误 TS1040:'async' 修饰符不能在环境上下文中使用。”

我如何编写异步函数定义?
谢谢

编辑
感谢 @Titian Cernicova-Dragomir 和 @Aaron 的回答。但是当我调用它时,我收到一个错误
const dddd = await asyncBusboy(22);
[ts] 'await' expression is only allowed within an async function.

有什么建议?

最佳答案

你只需要这个:

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

它返回 Promise 的事实是什么使它成为异步类型(与 async 修饰符无关)。消费者预计await any现在的值(value)。

另一方面,async修饰符用于增强函数(主体)实现 (它返回的东西被包裹在一个 promise 中)。由于 type-def 不处理实现,因此 async类型定义中不允许。

换句话说,从方法/函数接口(interface)的角度来看async修饰符没有说/改变任何东西,因此是 不需要 在接口(interface)声明中。

关于typescript - 如何将异步函数添加到类型 def 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48448151/

相关文章:

javascript - TypeScript - 如何将 JSON 数组解析为自定义对象数组

javascript - Ramda 中函数的反向 bool 返回

javascript - 在 JS 构造函数中使用时,Typescript 检查未正确完成

typescript - 尝试使用 Karma 为 Typescript 项目设置单元测试

javascript - 如何在 Ionic 中使用 CORS 编写 Angular 2 服务?

typescript - 如何修复 "Argument of type ... is not assignable to parameter of type ..."错误?

javascript - Angular 2 json获取数据对象

node.js - 如何开始在 VSCode 中使用 TypeScript 和 Node JS 进行开发

Angular 变化检测 ExpressionChangedAfterItHasBeenCheckedError

angular - 如何在 Angular 9 Reactive Form 中获取嵌套的 FormArray 控件