Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs typescript中的角度服务,具有依赖项注入和缩小功能_Angularjs_Typescript_Minify - Fatal编程技术网

Angularjs typescript中的角度服务,具有依赖项注入和缩小功能

Angularjs typescript中的角度服务,具有依赖项注入和缩小功能,angularjs,typescript,minify,Angularjs,Typescript,Minify,我现在正试图说服安格拉斯。我目前正在寻找服务,我也在使用typescript作为代码 现在,从web上的示例中,我看到人们在typescript中使用下面这样的服务 class Service { constructor( private $http: ng.IHttpService ) { } public MyMethod() { this.$http.get( "/" ) .success( null )

我现在正试图说服安格拉斯。我目前正在寻找服务,我也在使用typescript作为代码

现在,从web上的示例中,我看到人们在typescript中使用下面这样的服务

class Service
{
    constructor( private $http: ng.IHttpService )
    {
    }

    public MyMethod()
    {
        this.$http.get( "/" )
            .success( null )
            .error( null );
    }
}
现在,如果将其缩小,我将从构造函数中丢失
$http
,angular需要变量名。所以我四处查看,发现我可以使用$inject代替构造函数,但这也会遇到同样的缩小问题


人们如何在打字脚本环境中处理缩微和棱角?我正在努力寻找一些关于如何处理这一问题的可靠文件。在我看来,在现代api中出现这些问题似乎很奇怪,因此我肯定是在某些地方遗漏了什么。

仅使用
$inject
语法。e、 g:

class Service
{
    static $inject = ['$http'];    
    constructor( private $http: ng.IHttpService )
    {
    }

    public MyMethod()
    {
        this.$http.get( "/" )
            .success( null )
            .error( null );
    }
}

PS:我做了一个关于这个主题的详细视频:

目前官方的TypeScript编译器仍然没有发出可以在运行时用于DI系统的接口元数据。有一个关于发射器可扩展性的问题。
同时,我创建了一个AngularJS 1.3应用程序的示例项目(以及发出接口元数据的定制版本的TS编译器),该应用程序提供了修饰符来在应用程序模块中注册组件,并在运行时使用类元数据注入依赖项。您可以看一看。

但是这样,每个
服务
实例都有自己的
$http
引用。在普通JavaScript中,
angular.factory
方法通常用于访问闭包中的此类依赖项。您建议在Typescript中实现这一点的最佳实践是什么?服务是单例的。只有一个instanceJavascript不知道类(或单例),因此AngularJS也不知道。服务可以是任何东西。多年来,我一直在提供可实例化的“类”作为服务。是的,但AngularJS将进行实例化,并在任何需要的地方注入相同的实例。您可以在uglifyid之前使用gulp的“ngAnnotate”模块,因此它将防止AngularJS中的依赖关系丢失。例如:gulp.src(path.ts).pipe(ts(ts.createProject('tsconfig.json')).pipe(concat('app.min.js')).pipe(ngAnnotate({remove:true,add:true,single_quotes:true})).pipe(uglify()).pipe(gulp.dest('www/js/'))