2017-05-08 11 views
1

タイトルが十分明確であるかどうかわかりません。お気軽に改善を提案してください。aldradyをparentでAngularでインポートした場合、明示的に重複するインポートを省略できますか?

私が気づいているのは、私がデザインしているコンポーネントがたくさんの輸入品を持っている傾向があることです。それらの一部はインポートコンポーネントに複製されます。直観的には、私はそれが働くように感じているしかし、感知コードのにおい。

サルにバナナを持たせたいとします。

import { Banana } from "./banana"; 
@Component 
export class Monkey { } 

今、一部の男は猿を所有したいと考えています。

import { Monkey } from "./monkey"; 
@Component 
export class Dude { } 

しかし、おならも空腹で、自分自身もバナナが欲しいのですが?

import { Monkey } from "./monkey"; 
import { Banana } from "./banana"; 
@Component 
export class Dude { } 

これは私にとっては効果的でないようです。 2番目のインポートは、すでに猿がバナナを持っているので余分に見えます。

インポート階層を角度で宣言するのは適切な方法ですか?あるいは、各ファイルのインポートのgazillionsを調べるときにスクロールペイロードを減らすようなボスの方法がありますか?

もっと良い方法がない場合は、リファレンスマスに対するこの残虐行為の動機を見ることができて嬉しく思います。あなたは、単一のインポートを使用してから複数のファイルからの識別子を使用できるようにするには、他のファイルからエクスポートすることができ

答えて

1

import { Monkey } from "./monkey"; 
export { Monkey } from "./monkey"; // re-export 
@Component 
export class Dude { } 

も参照してくださいhttps://angular.io/docs/ts/latest/glossary.html#!#B

サイクルがある場合、これはかかわらず、エラーを見つけるのは難しいにつながることができます。 Angular 2 DI Error - EXCEPTION: Can't resolve all parameters

+0

これは '--module'ターゲットに依存します。 '--module system'を使うと' Monkey'は一度だけインポートされます。 '--module commonjs'を使うと、二つの' require'呼び出しが発行されます。 'system'は正しい、仕様に準拠した循環参照サポートを含む、最高の忠実度でESモジュールのセマンティクスを保持するので、トランスリンギングのための優れたフォーマットです。 –

+0

ああ男の子...それはもっと混乱インポート/エクスポート、heheに見えます。答えをありがとう。私は今は冗長バージョンにしておくつもりだと思う。なぜそれがそのように設計されているかについてのアイデア? –

+0

私にとっては、一貫して論理的に見えるので、私は答えが難しいです。暗黙のうちに何かをエクスポートしたいのですが? あなたの期待はどこから来たかによって決まると思います。 C#、Java、Goのような強く型付けされた言語から来たのであれば、この動作はあなたが期待しているものになります。もしあなたが他の言語から来ていれば、別の動作に慣れているかもしれません。強くタイプされた強い信者)。 –

関連する問題