Rom*_*man 4 node.js typescript
部分解决:
github上有一个老问题,对这个问题进行了一些描述。当您在全局范围内声明模块时,它会重写整个导出模块的类型。当你在一个模块中声明一个模块时,它会合并。为什么?我不知道
https://github.com/microsoft/TypeScript/issues/17736#issuecomment-344353174
我想通过接口合并来扩展第三方模块的类型。一切正常,但是当我export {};在types.d.ts 中发表评论时
,我遇到以下错误:
此表达式不可调用。类型 'typeof import("koa-session")' 没有调用签名
你能解释一下为什么会这样吗?
您可以在此处查看工作代码:https : //codesandbox.io/s/typescript-node-nocfq?file=/src/types.d.ts
在TypeScript github上已经解决了类似的问题。不幸的是,我现在知道可以描述它的任何其他文档页面。
注释掉export {}将types.d.ts文件从模块转换为脚本。从打字稿手册:
在 TypeScript 中,就像在 ECMAScript 2015 中一样,任何包含顶级导入或导出的文件都被视为一个模块。相反,没有任何顶级导入或导出声明的文件被视为脚本,其内容在全局范围内可用(因此也对模块可用)。
由于没有导出语句(也没有导入语句)的文件不是模块而是脚本,因此它没有关于任何模块的信息,并且确实会忽略“koa-session”存在现有定义的事实。
您可以在您的沙箱中尝试此操作 - 添加任何顶级import或exportin types.d.ts(它可以完全未使用)将修复This expression is not callable错误。
| 归档时间: |
|
| 查看次数: |
3733 次 |
| 最近记录: |