当前位置: 首页 > 知识库问答 >
问题:

如何在使用“declare namespace”的“d.ts”文件中导入“ts”模块?

倪鹏
2023-03-14

我决定将整个项目中需要的所有类型声明为一个d.ts文件。

所有类型。d、 输电系统

declare namespace PROJECT {

  interface MY_INTERFACE {
    // ...
  }

}

只要声明该名称空间,我就可以在我的所有项目文件中使用:

const something: PROJECT.MY_INTERFACE = {
  // ...
};

到目前为止,这一直有效。

但现在我需要声明一个基于现有JS对象的新类型。

@常数/集合。输电系统

export const COLLECTIONS = {
  PROP_A: "PROP_A",
  PROP_B: "PROP_B",
  PROP_C: "PROP_C",
};

因此,我必须在我的所有类型中执行以下操作。d、 ts文件。

所有类型。d、 输电系统

import { COLLECTIONS } from "@constants/COLLECTIONS";

declare namespace PROJECT {

  interface MY_INTERFACE {
    // ...
  }

  type SOME_TYPE = keyof typeof COLLECTIONS   // THIS IS WORKING FINE

}

问题是,只要在我的所有ypes.d.ts的顶层执行导入,我的PROJECT命名空间对我的项目文件不再可见。

我该怎么解决这个?

共有1个答案

百里修真
2023-03-14

我对此进行了更多的研究,这个解决方案在我的情况下有效https://stackoverflow.com/a/51114250/40769

像下面的示例一样使用导入内联仍然允许使用脚本类型. ts/.d.ts文件。

js prettyprint-override">declare namespace Express {
  interface Request {
    user: import("./user").User;
  }
}

这个答案也有一些关于“脚本”和“模块”ts文件之间区别的有用上下文:https://stackoverflow.com/a/42257742/40769

 类似资料:
  • 我想扩展快速会话类型以允许在会话存储中使用我的自定义数据。我有一个对象,它是我的类的实例: 所以我创建了自己的。d、 ts文件以将定义与现有express会话类型合并: 但是它根本不起作用——VS Code和tsc看不到它。所以我用简单的类型创建了测试定义: 并且测试场工作正常,所以导入导致问题。 我还尝试添加<代码>/// 编辑:我设置tsc在编译时生成定义文件,现在我有了我的user.d.ts

  • 当使用外部JavaScript库或新的宿主API时,你需要一个声明文件(.d.ts)定义程序库的shape。 这个手册包含了写.d.ts文件的高级概念,并带有一些例子,告诉你怎么去写一个声明文件。 指导与说明 流程 最好从程序库的文档开始写.d.ts文件,而不是代码。 这样保证不会被具体实现所干扰,而且相比于JS代码更易读。 下面的例子会假设你正在参照文档写声明文件。 命名空间 当定义接口(例如:

  • 问题内容: 我正在尝试在Python 2.7.2中使用并遇到奇怪的错误。 考虑以下目录结构: 具有以下代码: (在真实代码中有一个名称。) 尝试到时,产生以下错误: 我想念什么? 谢谢! 问题答案: 对于相对进口,您必须: a)使用相对名称 b)明确提供锚点 当然,您也可以只执行绝对导入:

  • 本文向大家介绍如何在Oracle中导入dmp文件,包括了如何在Oracle中导入dmp文件的使用技巧和注意事项,需要的朋友参考一下 项目开始拿到了dmp文件,数据库用的是10g的,但是尽然没导成功,后来想可能导出的时候用11导出的,决定试一下。 正好自己的机器是11的客户端,结果不识别imp命令,到安装目录下的bin文件夹下看尽然没有imp执行文件。可能装客户端的时候没选管理者装。 怎么办呢,从别

  • 我创建了ear项目,我有两个模块,命名为:mavenproject4-web mavevnproject4-ejb 我试图从web模块的ejb模块中导入一些接口和实体,但我不能。我尝试通过pom.xmm将ejb模块作为依赖项添加到web模块中,然后我的问题就解决了,这样做对吗? 添加依赖项后,我尝试运行project,并出现了以下异常:

  • 问题内容: 在PyCharm中,我添加了Python环境。然而, 失败作为未定义的引用。但是,它在命令行的Python解释器中运行良好。 GNURadio可以在Pycharm外部使用python正常工作。一切都已安装并配置为我想要的方式。 格努拉迪奥位于 也: PYTHONPATH = / usr / local / lib / python2.7 / site-packages:/usr/loc