在 TypeScript 中使用超级测试 - 遇到问题 "cannot invoke expression whose type lacks a call signature"

Using supertest in TypeScript - Getting problem "cannot invoke expression whose type lacks a call signature"

我在最初使用 JavaScript 后尝试将 supertest 与 TypeScript 一起使用。

但是我现在在我的代码下收到红色波浪线:

cannot invoke expression whose type lacks a call signature. Type 'typeof supertest' has no compatible call signatures

我正在通过以下方式使用超级测试:

import * as supertest from 'supertest';

const request = superTest(some.url);

// Forgive my pseudocode
function makeRequest() {
  return request.get('/endpoint')...
}

这是我应该担心的事情吗?我该如何纠正?

当您切换到 TypeScript 时,您需要为您使用的外部库提供类型信息。许多库会为您完成此操作 "out of the box",而对于其他库,您必须自己安装类型信息文件。

如果是 supertest,安装这个 NPM 包应该可以解决您的问题:https://www.npmjs.com/package/@types/supertest

我添加了 @types/supertest(如其他答案所建议的),但执行以下操作解决了问题:

  1. 像这样导入超级测试:

    import supertest from 'supertest';
    
  2. 在我的 index.ts 文件中,导出 app.listen(...); 的值,如下所示(之前是 export default server):

    export {server};