javascript - 如何在 index.d.ts typescript 定义文件中引用 Redux 类型?

标签 javascript typescript visual-studio-code intellisense typescript-typings

我想创建一个 index.d.ts文件引用了流行的 NPM 包中的某些类型,称为 redux .

我已经尝试过的事情:

(在我的 index.d.ts 文件的顶部)

  1. /// <reference path="../../../node_modules/redux/index.d.ts" />

这行不通。我怀疑是因为 redux/index.d.ts file 根本没有声明命名空间。当我编辑 redux/index.d.ts归档并用 declare namespace Redux { ... } 包装所有内容,一切正常。我在 redux@^4.0.0 .

  1. /// <reference types="redux" />

这不起作用,除非我安装 NPM 包 @types/redux/@3.6.31 ,其中包含与已发布的不匹配的旧的过时类型。最新版@types/redux package 只是一个已弃用的占位符,表示使用官方 redux包类型(不起作用)。

  1. import { Middleware } from "redux";

当我把 import上面显示的语句到我的 index.d.ts文件,文件中的每个声明都损坏了(即我依赖于我自己的 index.d.ts 类型文件的所有其他地方停止从中读取任何类型。)根据我所读的内容,放置一个 import d.ts 类型的语句file 导致 Typescript 将该文件视为模块,而不是定义文件。

糟糕的 (IMO) 变通办法,有点管用,但不是真的:

  1. 正在安装 NPM 包 @types/redux@3.6.31而不是最新弃用的占位符版本 @types/redux .
  2. 编辑我的 node_modules/redux/index.d.ts 副本将所有内容包装在命名空间中,例如declare namespace Redux { ... } .

其他信息:

我的项目是用 create-react-app 引导的v2 作为 JavaScript 项目。我只是在使用 d.ts文件来记录一些接口(interface)。我的编辑器是最新/稳定的 VSCode。

最佳答案

从 typescript 2.9 ( see section on import types ) 开始,您可以使用 import() 来使用类型定义文件,而无需实际导入模块本身。例如,此定义将使用 redux 包中的 Action 类型工作:

declare function createCustomAction(): import("redux").Action

无需使用三重斜杠指令在顶部引用任何内容。

关于javascript - 如何在 index.d.ts typescript 定义文件中引用 Redux 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53550649/

相关文章:

c++ - 什么是正确的 macOS vscode intellisense C++ 包含标准库的路径?

Javascript 检测内部 html 何时更改

javascript - 使用 Fluent API 增强 Typescript

javascript - Visual Studio 2017 : js file causes many typescript errors

c# - 运行应用程序时,在 VSCode 中的 ASP.NET Core 应用程序中启动特定 URL

visual-studio-code - VS Code 高亮修改的行

javascript - 如何处理 Selenium Javascript Webdriver 中的警报?

javascript - 无法读取未定义的属性 'online'

javascript - 链式插入到 sails.js 中的 2 个表中

typescript - TSLint 找不到带有自定义 d.ts 文件的自定义模块