键入生成“〜”模块

时间:2016-07-21 12:30:01

标签: typescript typescript-typings

我正在使用typings新的React项目。我已经从--global安装了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会在其中生成~这些模块?这些模块的用途是什么?

1 个答案:

答案 0 :(得分:0)

有时,声明文件依赖于其他声明文件。想想例如。关于redux-form:您在声明文件中使用了特定于redux的类型,并且您不想重新声明这些类型。你应该只能导入它们。有两种方式可以解决这些问题:

  • 如果您安装全局声明文件,例如。 redux-formtypings install --global dt~redux-form)的DefinitelyTyped版本。在安装过程中,打字会告诉你它删除了一些参考。然后你也可以安装这些。否则,您刚刚安装的声明文件可能无效,因为它正在使用来自例如的类型声明。 redux声明文件。

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

    例如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,打字稿可以从中认为您可以从中导入类型。 ¯\_(ツ)_/¯但是,现在应该可以从redux-form导入您需要的任何内容。 (import * as reduxForm from 'redux-form'

相关问题