在 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
(如其他答案所建议的),但执行以下操作解决了问题:
像这样导入超级测试:
import supertest from 'supertest';
在我的 index.ts 文件中,导出 app.listen(...);
的值,如下所示(之前是 export default server
):
export {server};
我在最初使用 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
(如其他答案所建议的),但执行以下操作解决了问题:
像这样导入超级测试:
import supertest from 'supertest';
在我的 index.ts 文件中,导出
app.listen(...);
的值,如下所示(之前是export default server
):export {server};