2016-05-08 20 views
1

私たちのプロジェクトでは、TypeCriptでAngularJs(v1)を使用していましたが、私のワークフローはやや複雑で遅いことがわかりました。だからこそ、私はこれをどのように単純化できるかについて、stackoverflowコミュニティに尋ねたいと思っています。typescriptコーディングワークフローの簡素化


1)手動での更新が は、今私たちは、ファイル_references.ts手で維持_references.ts。ファイルを追加/削除する必要があるたびに、このファイルを正しい順序で更新する必要があります。私は、このファイルを自動生成する解決策がないかどうかを知りたいと思います。私のtypescriptですプロジェクトのプロパティで、


2 ...私は出力セクションでオプション「宣言ファイルの生成」を持っていますが、それは右のオプションではないようです)インターフェース の集中的な使用の役割私は見ました

interface ISplashScreenController {} 
    interface ISplashScreenControllerScope extends ng.IScope {} 
    class SplashScreenController implements ISplashScreenController {} 

私は簡単に(このサンプルではSplashScreenControllerの種類として、VMを設定する)範囲のために理解することができますが、グローバル:多くのtypescriptですが、我々は次の3つの要素を持っているすべてのファイルに必要angularJs WTHチュートリアルでインターフェイスは本当に便利ですか? SplashscreenControllerを宣言する代わりに、ここでインターフェイスを使用する理由は何ですか?


3)グローバル注入

私はいくつかのグローバルなサービスを注入できるようにしたいと思い

。たとえば、$ translate、$ q、$ timeout、moment、自分自身のCommonServices ...実際、私のアプリの多くのコントローラ/サービスはこれを使用しています。私はこれをどこでも使えるようにしたいと考えています。

これは、たとえば、私は "DateFormatTools"を持っていて、自分のコントローラにそれを挿入する必要がなく、htmlで直接使用でき、vm.DateFormatTools.format(... )


4)最大の問題の1つは、app.tsと$ injectの両方を維持し、コンストラクタに注入することです。 app.tsで

:splashScreenController.tsで

smartLingoApp.controller("SplashScreenController", ["$scope", "$q", "$timeout", "$translate", "DialogServices", "InitializationServices", "LocalStorageServices", "UserServices", "StateStackServices", SplashScreenController]); 

:私は依存関係を削除、追加/

static $inject = ["$scope", "$q", "$timeout", "$translate", "DialogServices", "InitializationServices", "LocalStorageServices", "UserServices", "StateStackServices"]; 
constructor($scope: ISplashScreenControllerScope, 
    private $q: angular.IQService, 
    private $timeout: angular.ITimeoutService, 
    private $translate: angular.translate.ITranslateService, 
    private dialogServices: IDialogServices, 
    private initializationServices: IInitializationServices, 
    private localStorageServices: ILocalStorageServices, 
    private userServices: IUserServices, 
    private stateStackServices: IStateStackServices) {} 

そしてもちろん毎回、私は両方の$注入を更新する必要がここにサンプルがあります両方のapp.tsが間違いを引き起こす可能性があります。 理想的には、splashScreenController.tsにのみ依存関係を設定するとよいでしょう。

ありがとうございます。

答えて

1

手動で_references.tsを更新する現在、私たちは手作業で_references.tsファイルを管理しています。ファイルを追加/削除する必要があるたびに、このファイルを正しい順序で更新する必要があります。あなたのためのreference.tsを維持https://github.com/TypeStrong/grunt-ts/#reference

:私はautoに解決策がない場合、昔...私はgruntのためにこれを書いた

このFILを生成知っていただきたいと思います。

もっと

ビデオ:あなたの答えのためのhttps://youtu.be/0-6vT7xgE4Y

+0

感謝。残念なことに、私は理由を理解できませんが、私のapp.tsがgenerate _referencesファイルの先頭に含まれています。もちろんapp.tsには他のtypescriptのdefが必要なので、私のアプリケーションはクラッシュします。 – Adavo