我想创建一个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
无需在顶部使用三次斜杠指令引用任何内容.