2016-05-25 7 views
0

別名でモジュールをインポートする方法はありますか? など。私は、フォルダcommon/services/logger/logger.tsの角度サービスを持っています。 インポートを行う方法import {Logger} from "services"「サービス」にはすべてのサービスが含まれていますか?Typescript - インポートを簡略化する

私はthisthisを見ましたが、私はそれをどのように使用できるか理解できませんでした。

+0

'' Logger'という名前のクラスを 'services'というファイルからインポートしますか? – LordTribual

+0

すべてのクラスを1つのファイルにまとめて、 "services"という名前でアクセス可能にしたい。なぜなら私はそれをインポートしたいときに常に各モジュールに完全なパスを書きたくないからです。 –

+0

"@ Anger/core"の 'import {Injectable} 'と同じです。だから "@ angle/core"は一種のエイリアスです。それを行う方法はありますか? –

答えて

1

この問題を解決するために、webpackを使用しました。必要なすべての依存関係をインポートする場合は、webpack configにエイリアスを追加する必要があります。たとえば、ルートにservicesというフォルダがあるフォルダsharedがあります。フォルダservicesには、必要なすべてのサービスをエクスポートするindex.tsが必要です(例:Logger)。したがってエイリアスは"services" => "shared/services"になります。

WebStormでオートコンプリート機能を使用するには、sharedというフォルダを「リソースルート」としてマークするだけです。

+0

これがどのように問題を解決するのか分かりません。 'サービス 'や他の誰が' Logger'をインポートしたいのか、そして 'ServiceName'から' Logger'をどうやって得るのですか? –

+0

これはどこからでも利用できるフォルダへのパスです。Webpackをどのように設定するか、どのようなフォルダ構造にするかを記述する必要があるということですか? –

+0

私は自分の答えを更新しました。今はっきりしていますか? 'ServiceName'は実際に' logger'自体で、 'services'フォルダ内の' index.ts'にエクスポートする必要があります。 –

2

すべてのサービスを含む1つのファイルを作成し、そのファイルに名前を付けます。 services.ts。そのファイルは、すべてのサービスを格納してエクスポートするため、バレルと見ることができます。ファイルには、次のようになります。そして、あなたがServices.Logger経由であなたのserviesにアクセスし、または直接経由して、必要なサービスをインポートすることができます

import * as Services from 'common/services'; 

export * from './logger/logger'; 
export * from ...; 
etc. 

今、あなたは、次のように、この1つのファイルをインポートすることができます

import {Logger} from 'common/services'; 

これは単なる例であるため、パスを変更していることに注意してください。この手法の詳細については、hereをご覧ください。

+0

私は怠惰な人です:)それは同じことです。すべてのアプリケーションでアクセス可能なエイリアスを作成する方法はありますか? 「../../../../ services」から '{Logger}を書き込まないようにするには? –

+0

すべてのファイルでグローバルにアクセス可能ですか? – LordTribual

+0

常にインポートする必要があります。しかし、私の提案するテクニックでは、1つのファイルをインポートしてからサービスを利用できるため、簡単に作成できます。 – LordTribual