1

我正在使用typings一个新的 React 项目。我已经安装了各种库类型定义--globalfrom dt,如下所示:

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生成这些模块~?这些模块的预期用途是什么?

4

1 回答 1

0

有时,声明文件依赖于其他声明文件。想想例如。about redux-form:您在声明文件中使用了特定于的类型,redux并且您不想重新声明这些类型。您应该能够导入它们。打字有两种方式处理这些:

  • 如果您安装全局声明文件,例如。redux-form( )的绝对类型化版本typings install --global dt~redux-form。在安装过程中,typings 会告诉你它删除了一些引用。然后由您来安装这些。否则,您刚刚安装的声明文件可能无效,因为它使用了来自例如的类型声明。redux 声明文件。

  • 如果您安装模块声明文件,例如。redux-form, ( ) typings的类型注册表版本可以typings install npm~redux-form更好地理解该文件依赖于哪些其他声明文件。结果,它可以生成一个声明文件,其中包含已安装的声明文件所依赖的完整声明文件。它将这些放在“伪”模块中,以便它们可以在同一个声明文件中使用。

    例如 for 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';
    

    原来的只是从redux导入。

    缺点:这会创建一些模块~redux-form~redux,打字稿可能会认为您可以从中导入类型。¯\_(ツ)_/¯但是,现在应该可以从redux-form. ( import * as reduxForm from 'redux-form')

于 2016-08-22T18:44:06.693 回答