繁体   English   中英

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

[英]How to reference Redux types in index.d.ts typescript definition file?

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

我已经尝试过的事情:

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

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

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

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

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

  1. import { Middleware } from "redux";

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

糟糕(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文件来记录一些接口。 我的编辑器VSCode最新/稳定。

由于typescript 2.9( 请参阅导入类型一节 ),您可以使用import()来使用类型定义文件,而无需实际导入模块本身。 例如,此定义将使用redux包中的Action类型:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM