我正在创建一个环境模块来补充缺失的类型。我可以创建一个typings.d.ts文件,当我在代码的其他位置导入它时,一切都很好,除了doSomething的返回类型是any。为了解决这个问题,我将正确的类型从一个已知的库导入到typings.d.ts中,这为环境模块提供了正确的类型。
由于某种原因,当我这样做时,环境模块的import语句会中断。
typings.d.ts
import { Tree } from '@otherLib/core' /// <=== Adding this breaks the ambient declaration below
declare module '@lib/missingTypings' {
export function doSomething(message: string): Tree
}在上面的示例中,我希望从另一个库中提供适当的Tree返回类型。
发布于 2019-04-30 07:44:02
在我的例子中,这个奇怪的bug会影响Visual类型记录语言服务(编辑器不识别模块),而Babel编译代码时没有问题。
This answer为我解决了这个问题,但我仍然不明白为什么带有静态导入的代码在动态导入语法工作时不能工作。
发布于 2021-03-23 18:14:12
如果添加顶级导入/导出,则声明不再处于环境状态。为了确保您仍然有环境声明,您需要在declare块中导入,但是类型记录目前不允许您在声明块内使用相对导入,因为与模块是否应该相对于使用类型定义的类型定义文件或相对于使用类型定义的使用者文件相混淆,因此实现所要做的正确方法是使用导入()语法https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-9.html#import-types。
我在这里写了更多关于这个的文章:https://stackoverflow.com/a/66768386/2054671
https://stackoverflow.com/questions/50274458
复制相似问题