编程语言
首页 > 编程语言> > javascript – 如何在index.d.ts typescript定义文件中引用Redux类型?

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

作者:互联网

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

我已经尝试过的事情:

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

> ///< reference path =“../../../ node_modules / redux / index.d.ts”/>

这不起作用.我怀疑这是因为redux / index.d.ts文件根本没有声明命名空间.当我编辑redux / index.d.ts文件并用声明命名空间Redux {…}包装所有内容时,一切正常.我在redux@^4.0.0.

> ///< reference types =“redux”/>

除非我安装了NPM软件包@ types / redux / @ 3.6.31,它的旧版过时类型与发布的版本不匹配,否则这不起作用.最新版本的@ types / redux包只是一个不推荐使用的占位符,它表示使用官方的redux包装类型(不起作用).

>从“redux”导入{Middleware};

当我将上面显示的import语句放入我的index.d.ts文件中时,文件中的每个声明都会中断(即我依赖于我自己的index.d.ts文件的每个其他地方都停止读取任何类型的文件)从我读过的内容中,将一个import语句放在d.ts文件的类型中会导致Typescript将该文件视为模块,而不是定义文件.

糟糕(IMO)的解决方法有点工作但不是真的:

>安装NPM软件包@ types / redux @ 3.6.31而不是@ types / redux的最新弃用占位符版本.
>编辑我的node_modules / redux / index.d.ts副本以包装命名空间中的所有内容,例如声明名称空间Redux {…}.

其他信息:

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

解决方法:

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

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

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

标签:typescript-typings,javascript,typescript,visual-studio-code,intellisense
来源: https://codeday.me/bug/20190827/1745699.html