键入生成的“~”模块
Typings generated "~" modules
我正在 typings
中使用一个新的 React 项目。我已经从 dt
安装了各种库类型定义为 --global
,像这样:
typings install dt~redux --global --save
我正在使用 IntelliJ IDEA,我注意到当它建议导入某些东西时,它会在一堆以 ~
开头的模块中找到它。这是什么?
例如,如果我在 Redux IDispatch
上请求导入建议,我会得到以下建议:
~redux-thunk~redux/redux
~react-router-redux~redux/redux
~react-redux~redux/redux
~redux/redux
生成这样的导入语句:
import {IDispatch} from "~redux-thunk~redux/redux";
我期望的是:
import {IDispatch} from "redux";
这是怎么回事?为什么 typings
会生成这些包含 ~
的模块?这些模块的预期用途是什么?
有时,声明文件依赖于其他声明文件。想想例如。关于 redux-form
:您在声明文件中使用了特定于 redux
的类型,并且您不想重新声明这些类型。您应该能够导入它们。打字有两种方式处理这些:
如果安装 全局声明文件,例如。 redux-form
(typings install --global dt~redux-form
) 的 DefinitelyTyped 版本。在安装过程中,打字会告诉你它删除了一些引用。然后由您来安装这些。否则,您刚刚安装的声明文件可能无效,因为它正在使用来自 eg 的类型声明。 redux 声明文件。
如果你安装一个模块声明文件,例如。 redux-form
、(typings install npm~redux-form
) typings 的 typings 注册表版本可以更好地理解该版本依赖于哪些其他声明文件。因此,它可以生成一个声明文件,其中包含已安装文件所依赖的完整声明文件。它将把它们放在 'pseudo' 模块中,这样它们就可以在同一个声明文件中使用。
例如 redux-form
,生成的 typings/modules/redux-form/index.d.ts
文件将包含
declare module '~redux-form~redux' { /* actual redux typings */ }
再往下,在 redux-form
模块声明中,您会看到:
import { IDispatch as Dispatch, IReducer as Reducer } from '~redux-form~redux';
而 the original 只是从 redux 导入。
缺点:这会创建一些模块 ~redux-form~redux
,typescript 认为您可以从中导入类型。 ¯\_(ツ)_/¯
但是,现在应该可以从 redux-form
导入任何你需要的东西了。 (import * as reduxForm from 'redux-form'
)
我正在 typings
中使用一个新的 React 项目。我已经从 dt
安装了各种库类型定义为 --global
,像这样:
typings install dt~redux --global --save
我正在使用 IntelliJ IDEA,我注意到当它建议导入某些东西时,它会在一堆以 ~
开头的模块中找到它。这是什么?
例如,如果我在 Redux IDispatch
上请求导入建议,我会得到以下建议:
~redux-thunk~redux/redux
~react-router-redux~redux/redux
~react-redux~redux/redux
~redux/redux
生成这样的导入语句:
import {IDispatch} from "~redux-thunk~redux/redux";
我期望的是:
import {IDispatch} from "redux";
这是怎么回事?为什么 typings
会生成这些包含 ~
的模块?这些模块的预期用途是什么?
有时,声明文件依赖于其他声明文件。想想例如。关于 redux-form
:您在声明文件中使用了特定于 redux
的类型,并且您不想重新声明这些类型。您应该能够导入它们。打字有两种方式处理这些:
如果安装 全局声明文件,例如。
redux-form
(typings install --global dt~redux-form
) 的 DefinitelyTyped 版本。在安装过程中,打字会告诉你它删除了一些引用。然后由您来安装这些。否则,您刚刚安装的声明文件可能无效,因为它正在使用来自 eg 的类型声明。 redux 声明文件。如果你安装一个模块声明文件,例如。
redux-form
、(typings install npm~redux-form
) typings 的 typings 注册表版本可以更好地理解该版本依赖于哪些其他声明文件。因此,它可以生成一个声明文件,其中包含已安装文件所依赖的完整声明文件。它将把它们放在 'pseudo' 模块中,这样它们就可以在同一个声明文件中使用。例如
redux-form
,生成的typings/modules/redux-form/index.d.ts
文件将包含declare module '~redux-form~redux' { /* actual redux typings */ }
再往下,在
redux-form
模块声明中,您会看到:import { IDispatch as Dispatch, IReducer as Reducer } from '~redux-form~redux';
而 the original 只是从 redux 导入。
缺点:这会创建一些模块
~redux-form~redux
,typescript 认为您可以从中导入类型。¯\_(ツ)_/¯
但是,现在应该可以从redux-form
导入任何你需要的东西了。 (import * as reduxForm from 'redux-form'
)