繁体   English   中英

带导入的环境模块声明

[英]ambient module declaration with import

我正在创建一个环境模块来补充缺少的类型。 我可以创建一个typings.d.ts文件,当我将它导入到代码的其他位置时,一切都很好,除了doSomething的返回类型是any 为了解决这个问题,我从一个已知的库中将正确的类型导入到typings.d.ts这为环境模块提供了正确的类型。

出于某种原因,当我这样做时,环境模块的import语句会中断。

打字.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返回类型。

在我的情况下,这个奇怪的错误会影响 Visual Studio Typescript 语言服务(编辑器无法识别模块),而 Babel 编译代码没有问题。

这个答案为我解决了这个问题,但我仍然不相信为什么静态导入的代码在动态导入语法有效时不起作用。

如果您添加顶级导入/导出,您的声明将不再是环境。 为了确保您仍然有环境声明,您需要在declare块中进行导入,但是由于与模块是否应该相对于类型定义文件或相对于使用类型定义的消费者文件,因此实现您要执行的操作的正确方法是使用 import() 语法https://www.typescriptlang.org/docs/手册/release-notes/typescript-2-9.html#import-types

我在这里写了更多关于这个: https : //stackoverflow.com/a/66768386/2054671

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM