如何在 index.d.ts typescript 定义文件中引用 Redux 类型?
How to reference Redux types in index.d.ts typescript definition file?
我想创建一个 index.d.ts
文件来引用流行的 NPM 包中的某些类型,称为 redux
。
我已经尝试过的事情:
(在我的 index.d.ts
文件的顶部)
/// <reference path="../../../node_modules/redux/index.d.ts" />
这行不通。我怀疑这是因为 redux/index.d.ts
文件根本没有声明名称空间。当我编辑 redux/index.d.ts
文件并用 declare namespace Redux { ... }
包装其中的所有内容时,一切正常。我在 redux@^4.0.0
.
/// <reference types="redux" />
这不起作用,除非我安装 NPM 包 @types/redux/@3.6.31
,它有旧的过时类型,与已发布的类型不匹配。 @types/redux
包的最新版本只是一个已弃用的占位符,表示使用官方 redux
包类型(不起作用)。
import { Middleware } from "redux";
当我将上面显示的 import
语句放入我的 index.d.ts
文件时,文件中的每个声明都损坏了(即我依赖我自己的 index.d.ts
文件的每个其他地方for types stopped reading any types at all.)根据我的阅读,将 import
语句放在 d.ts
文件的类型中会导致 Typescript 将该文件视为模块,而不是定义文件.
不好的 (IMO) 变通办法有点管用但不是真的:
- 正在安装 NPM 包
@types/redux@3.6.31
而不是 @types/redux
的最新弃用占位符版本。
- 编辑我的
node_modules/redux/index.d.ts
副本以将所有内容包装在命名空间中,例如declare namespace Redux { ... }
.
其他信息:
我的项目是用 create-react-app
v2 作为 JavaScript 项目引导的。我只是使用 d.ts
文件来记录一些接口。我的编辑是 VSCode latest/stable.
从 typescript 2.9 (see section on import types) 开始,您可以使用 import()
来使用类型定义文件,而无需实际导入模块本身。例如,此定义将使用 redux 包中的 Action
类型工作:
declare function createCustomAction(): import("redux").Action
无需使用三重斜杠指令在顶部引用任何内容。
我想创建一个 index.d.ts
文件来引用流行的 NPM 包中的某些类型,称为 redux
。
我已经尝试过的事情:
(在我的 index.d.ts
文件的顶部)
/// <reference path="../../../node_modules/redux/index.d.ts" />
这行不通。我怀疑这是因为 redux/index.d.ts
文件根本没有声明名称空间。当我编辑 redux/index.d.ts
文件并用 declare namespace Redux { ... }
包装其中的所有内容时,一切正常。我在 redux@^4.0.0
.
/// <reference types="redux" />
这不起作用,除非我安装 NPM 包 @types/redux/@3.6.31
,它有旧的过时类型,与已发布的类型不匹配。 @types/redux
包的最新版本只是一个已弃用的占位符,表示使用官方 redux
包类型(不起作用)。
import { Middleware } from "redux";
当我将上面显示的 import
语句放入我的 index.d.ts
文件时,文件中的每个声明都损坏了(即我依赖我自己的 index.d.ts
文件的每个其他地方for types stopped reading any types at all.)根据我的阅读,将 import
语句放在 d.ts
文件的类型中会导致 Typescript 将该文件视为模块,而不是定义文件.
不好的 (IMO) 变通办法有点管用但不是真的:
- 正在安装 NPM 包
@types/redux@3.6.31
而不是@types/redux
的最新弃用占位符版本。 - 编辑我的
node_modules/redux/index.d.ts
副本以将所有内容包装在命名空间中,例如declare namespace Redux { ... }
.
其他信息:
我的项目是用 create-react-app
v2 作为 JavaScript 项目引导的。我只是使用 d.ts
文件来记录一些接口。我的编辑是 VSCode latest/stable.
从 typescript 2.9 (see section on import types) 开始,您可以使用 import()
来使用类型定义文件,而无需实际导入模块本身。例如,此定义将使用 redux 包中的 Action
类型工作:
declare function createCustomAction(): import("redux").Action
无需使用三重斜杠指令在顶部引用任何内容。