我想创建一个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
文件的其他所有类型)停止从中读取所有类型。)根据我的阅读,在import
文件的类型上放置d.ts
语句会使Typescript将该文件视为模块,而不是定义文件。< / p>
@types/redux@3.6.31
,而不是不推荐的最新@types/redux
占位符版本。node_modules/redux/index.d.ts
副本以将所有内容包装在名称空间中,例如declare namespace Redux { ... }
。我的项目使用create-react-app
v2作为JavaScript项目进行了引导。我只是使用d.ts
文件来记录一些接口。我的编辑器是VSCode最新/稳定的。
答案 0 :(得分:5)
自打字稿2.9(see section on import types)起,您可以使用import()
使用类型定义文件,而无需实际导入模块本身。例如,此定义将使用redux包中的Action
类型进行工作:
declare function createCustomAction(): import("redux").Action
无需使用三斜杠指令在顶部引用任何内容。