在 JavaScript 的类型文件中声明接口

2023-11-27

项目信息

我正在开发一个 JavaScript 项目,该项目使用.d.ts文件。这是我之前提出的问题的后续问题,因此您可以查看有关该项目的更多信息here.

Problem

尽管我通常可以从类型文件中提取函数,但我无法提取空的或纯粹由接口组成的接口或命名空间。我通过创建一个临时解决了这个问题const每个接口的实现和使用@typeof ConstantImplementation在评论中。请参见下面的示例:

// Typings File
export namespace test {
    export interface ITest {
        foo: string;
        bar: number;
    }
    export const Test: ITest;
}

// JS File
if (undefined) var {Test: ITest} = require("globals.d.ts").test; 
// Above line shows `unused var error`

/* @type {typeof ITest} */
var x = {};
x.foo = "hello";
x.bar = 3;
// if I do `x.` intellisense should suggest `foo` and `bar` 

我想知道是否有更好的方法来解决这个问题,最好是不会抛出错误的方法(使用eslint ignore line不是修复)。

澄清

这个问题不是关于从类型文件中获取功能。它纯粹是为了让 VSCode 智能感知与类型接口一起工作。这是一张解释我想要什么的图像(圆圈内的两条线):

enter image description here


所以我能够使用 JSDoc 解决这个问题

测试.d.ts

export namespace test {
    export interface ITest {
        foo: string;
        bar: number;
    }
}

test.js

/**
 * @type {import("./test").test.ITest}
 */

let x;

x.

智能感知现在可以工作了

Working intellisense

我还发现的一件事是,如果你添加jsconfig.json with

jsconfig.json

{
    "compilerOptions": {
        "checkJs": true
    }
}

您的智能感知进一步提高

Better intellisense

Update-1

正如@nickzoum 所指出的,如果您定义test.d.ts像下面这样

export interface ITest {
    foo: string;
    bar: number;
}

export as namespace test;

然后你也可以在 JS 中使用下面的形式进行智能感知

/** @typedef {import("./test").ITest} ITest */

/** @type {ITest} */
var x = {};
x.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JavaScript 的类型文件中声明接口 的相关文章

随机推荐

  • Bash 终端输出 - 突出显示包含某些文本的行

    当我在 bash 中得到输出时 我得到了标准的 2 色屏幕 默认情况下 如果某行包含一些关键文本输出 有什么方法可以突出显示该行吗 例如 如果它包含单词 FAIL 则该行颜色为红色 我读过这个https unix stackexchange
  • 如何索引 PDF 文件并搜索关键字?

    我有一堆 PDF 几百个 它们没有适当的结构 也没有特定的领域 他们所拥有的只是大量的文字 我正在尝试做的事情 对 PDF 建立索引并根据索引搜索一些关键字 我有兴趣查找该特定关键字是否在 PDF 文档中 如果是 我想要找到该关键字的行 如
  • 用 UI 对话框替换提示

    如何用简单的 UI 对话框替换此代码中的提示以实现相同的效果 使用提示时 IE 会发出安全警告 HTML
  • vh / % 单位和移动设备上的键盘

    我对像这样的单位有问题vh 对于高度 当有任何input处于活动状态时 移动设备上的键盘会更改元素高度 我正在寻找在键盘处于活动状态时将其更改为静态高度的解决方案 jsfiddle 在移动设备上打开 这个问题很简单 我们以前都经历过 幸运的
  • iPad 上捕获视图上下文的质量低

    我需要捕获特定的 UIView 但结果质量低下 如何解决此问题并提高质量 UIGraphicsBeginImageContext captureView bounds size captureView layer renderInConte
  • 在 C# 中使用 WMI 更改用户家长控制设置

    我对 WMI 和 COM 真的很陌生 我想更改用户帐户家长控制的一些参数和 唯一可用的 API 是 WMI 要使用的 WMI 提供程序类是 WpcUserSettings 我不明白如何修改每个用户的参数 我必须创建一个 每个用户都有此类的
  • 如何防止 WordPress 剥离摘录中的 HTML 标签

    我正在使用 wp trim words 修剪主页上的一些摘录 它工作正常 只是它从摘录中删除了 HTML 标签 我需要能够将摘录的某些部分加粗 使用 strong 按照说明进行操作here 我尝试删除 wp trim words 函数并使用
  • Laravel - 作业在一台服务器上调度,在另一台服务器上处理

    我正在研究 Laravel 应用程序的日志记录方面 amd 计划将数据发送到 SQS 以便稍后检索 但是 我想将作业从生产服务器分派到 AWS 队列 然后让队列在侦听队列的单独日志服务器上工作 我了解如何设置队列工作程序来监听队列 但是 L
  • Jetty:以编程方式停止会导致“1 个线程无法停止”

    我有一个嵌入式 Jetty 6 1 26 实例 我想通过 HTTP GET 发送到来关闭它 shutdown 所以我创建了一个JettyShutdownServlet Override protected void doGet HttpSe
  • 通过超时取消 C# 4.5 TcpClient ReadAsync

    通过超时取消 TcpClient ReadAsync 操作并捕获 NET 4 5 中的此超时事件的正确方法是什么 TcpClient ReadTimeout 似乎适用于同步只读 UPDATE 尝试应用此处描述的方法取消异步操作 var bu
  • VS2015CE中显示多余的空行,无法去掉

    当我使用
  • R 中的交互式散点图,覆盖/悬停摘要/工具提示作为用户提供的绘图函数

    我一直在研究 R 中的交互式绘图 我知道有几个包可以创建交互式绘图 特别是散点图 但我正在寻找某种功能 例如这个情节 人们可以将鼠标悬停在按钮上以获得该点后面数据的小数字摘要 即工具提示 当您拥有包含更多变量的数据集时 通常最好探索 可视化
  • Android TextView 文本未换行

    谁能告诉我文字出了什么问题 超过一行的文本不会换行到下一行 而是超出屏幕 以下是代码
  • R-3.2.1 无法加载共享对象 internet.so

    将 R 从 3 1 3 升级到 3 2 1 后 我无法从 CRAN 安装软件包 错误信息是共享对象internet so无法加载 install packages randomForest Installing package into g
  • 具有输入/输出流的 Java 进程

    我下面有以下代码示例 您可以在 bash shell 中输入命令 即echo test并让结果回显 然而 读完第一遍之后 其他输出流不起作用 为什么会这样或者我做错了什么 我的最终目标是创建一个线程计划任务 定期向 bash 执行命令 以便
  • Android 10 - 作为存储在应用程序主目录中的子进程启动可执行文件的替代方案

    我有一个 Android 应用程序 C Xamarin 将 python 环境与其 apk 捆绑在一起 将 python 文件提取到 app 文件目录中 通过将 python 可执行文件作为子进程执行来运行 python 代码 这已经工作了
  • 两个鸡蛋问题混乱

    两个鸡蛋问题 给你 2 个鸡蛋 您可以进入一栋 100 层的建筑 鸡蛋可能非常硬 也可能非常脆弱 这意味着如果从一楼掉落它可能会破裂 或者如果从 100 楼掉落甚至可能不会破裂 两个鸡蛋是相同的 你需要计算出 100 层楼的最高楼层 鸡蛋从
  • 在android中以编程方式获取屏幕密度?

    如何在android中以编程方式获取屏幕密度 我的意思是 如何找到当前设备的屏幕 dpi 您可以从显示屏上获取信息显示指标 struct DisplayMetrics metrics getResources getDisplayMetri
  • C#:如何处理大数算术?

    我正在编写一个应用程序 其中涉及带有大量数字的算术运算 我之前编写过一个类 通过将大数字定义为字符串 然后使用慢速算术字符串函数来简化对大数字的处理 这是最好的方法吗 如果不是 我应该如何解决这个问题 C 有内置的东西可以应对这种情况吗 如
  • 在 JavaScript 的类型文件中声明接口

    项目信息 我正在开发一个 JavaScript 项目 该项目使用 d ts文件 这是我之前提出的问题的后续问题 因此您可以查看有关该项目的更多信息here Problem 尽管我通常可以从类型文件中提取函数 但我无法提取空的或纯粹由接口组成