简化打字稿编码工作流程

时间:2016-05-08 01:13:53

标签: angularjs typescript

在我们的项目中,我们使用带有打字稿的AngularJs(v1),我发现我们的工作流程有点过于复杂和缓慢。这就是为什么我想问一下stackoverflow社区如何简化这个问题。

1)手动更新_references.ts 现在我们手工维护文件_references.ts。每次我们需要添加/删除文件时,我们都需要使用正确的顺序更新此文件。我想知道是否没有自动生成此文件的解决方案。在我的打字稿项目的属性中,我在输出部分有一个选项“生成声明文件”,但似乎这不是正确的选项......

2)密集使用界面的作用 我在很多打字稿上看到了每个文件中我们需要的angularJs,它们有以下3个元素:

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

我可以很容易地理解范围(在这个示例中将vm设置为SplashScreenController的类型),但是全局接口是否真的有用?在这里使用界面的原因是什么,而只是声明SplashscreenController?

3)全球注射

我希望能够注入一些全球服务。例如:$ translate,$ q,$ timeout,moment,我自己的CommonServices ......实际上,我的应用程序中的许多控制器/服务都使用它,并且每次我需要它时都会注入它有点奇怪。我希望能够在任何地方使用它。

尤其如此,例如我想拥有一个“DateFormatTools”,并且能够直接在我的html中使用它,而无需将其注入我的控制器,然后调用vm.DateFormatTools.format(...)

4)最大的问题之一是在构造函数中维护app.ts和$ inject以及注入。这是一个示例:

在app.ts中

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

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) {}

当然,每次我添加/删除依赖项时,我都需要更新$ inject和两个app.ts,这可能会造成错误。 理想情况下,仅在splashScreenController.ts

中设置依赖项会很好

谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

  

手动更新_references.ts现在我们手动维护文件_references.ts。每次我们需要添加/删除文件时,我们都需要使用正确的顺序更新此文件。我想知道是否没有自动生成此fil的解决方案

很久以前......我是为grunt写的:https://github.com/TypeStrong/grunt-ts/#reference

为您维护reference.ts

更多

视频:https://youtu.be/0-6vT7xgE4Y