2016-07-21 9 views
1

私はtypingsに新しいReactプロジェクトを使用しています。"〜"モジュールが入力されました。

typings install dt~redux --global --save 

私はのIntelliJ IDEAを使用していると私はそれが何かをインポートするために提案したときに、それがそのモジュールの束にそれを見つけたことに気付きました:私はこのように、dtから--globalなど、さまざまなライブラリの型定義をインストールしました~で始まります。これは何ですか?

import {IDispatch} from "~redux-thunk~redux/redux"; 

私は何を期待することは次のとおりです:

このようなインポート文を生成

~redux-thunk~redux/redux 
~react-router-redux~redux/redux 
~react-redux~redux/redux 
~redux/redux 

:私はReduxのIDispatchの輸入提案を求める場合

は例えば、私はのための提案を取得します

import {IDispatch} from "redux"; 

ここでは何が起こっていますか? typings~でこれらのモジュールを生成するのはなぜですか?これらのモジュールの使用目的は何ですか?

答えて

0

場合によっては、宣言ファイルは他の宣言ファイルによって異なります。例えば考える。約redux-form:宣言ファイル内でタイプがreduxに限定されており、再宣言したくない場合。あなたはそれらをインポートすることができます。これらを扱うタイピング方法は2つあります。

  • あなたはグローバル宣言ファイルをインストールする場合、例えば。 DefinitelyTypedバージョンredux-formtypings install --global dt~redux-form)です。インストール時に、いくつかの参考文献が削除されたとの情報が入力されます。それでは、これらもインストールするのはあなた次第です。それ以外の場合は、インストールしたばかりの宣言ファイルは無効である可能性があります。たとえば、次のような型宣言が使用されています。 redux宣言ファイル

  • モジュール宣言ファイルをインストールすると、たとえば、次のようになります。 redux-formの入力レジストリバージョン(typings install npm~redux-form)は、これが依存する他の宣言ファイルをよりよく理解しています。その結果、インストールされた宣言ファイルが含まれている宣言ファイルが生成されます。これらを '擬似'モジュールに入れて、同じ宣言ファイルの中で使うことができます。 redux-formため

    例えば、生成されたtypings/modules/redux-form/index.d.tsファイルはredux-formモジュール宣言内のさらに下

    declare module '~redux-form~redux' { /* actual redux typings */ } 
    

    とが含まれます、あなたが表示されます:

    import { IDispatch as Dispatch, IReducer as Reducer } from '~redux-form~redux'; 
    

    the originalながらだけの再来から輸入しています。

    欠点:これはtypescriptがタイプをインポートできると思ういくつかのモジュール~redux-form~reduxを作成します。 ¯\_(ツ)_/¯しかし、あなたが必要とするものをただちにredux-formからインポートすることが可能になるはずです。 (import * as reduxForm from 'redux-form'

+0

これは意味があります。しかし、 "redux"からimport {IDispatch}を試み、 'dispatch:IDispatch'を宣言すると、' redux-thunk'で許可されているように、 'dispatch()'に関数を渡すことはできません。あなたがこれを行うことができることを知っているそれは私が '{IDispatch}を"〜redux-thunk〜redux "からインポートすると機能しますが、これは本当に好きではありません... – Aaron

関連する問題