在angularjs + typescript中注入breeze服务

时间:2014-10-23 17:06:17

标签: angularjs typescript breeze angularjs-service

class Metadata {

    constructor(private breeze) {

        this.breeze.? // Ctrl+Space Nothing 

        breeze.? // Ctrl+Space Everything

    }

}

angular.module('bs.breeze', ['breeze.angular']);

// do nothing but you could
// create the window.breeze object
angular.module('bs.breeze').run(['breeze', function (breeze) { }]);


//get breeze metadata by hand
angular.module("bs.breeze").factory('metadata', [ 'breeze', (breeze) => new Metadata(breeze)]);

this.breeze。?什么都不显示,因为"私人微风"你可以看到没有声明类型。

微风。?显示所有内容,因为它引用了breeze.d.ts

中声明的模块breeze

breeze和this.breeze是同一个对象

我的问题是如何使用AngularJs标准注入,就像我在最后一行中做的那样,当我将breeze服务注入元数据服务时,然后当我编写元数据类时如何使用" this.breeze"并具有类似智能感知的TypeScript优势。

最后,可能将this.breeze看作是用于智能感知目的的breeze模块,还是存在实现此方案的其他方式?

1 个答案:

答案 0 :(得分:4)

您可以使用typeof来引用模块的类型。在这种情况下,由于您具有名为breeze的参数,因此您需要重命名参数或为全局符号breeze创建导入,以便您可以实际引用它:

import br = breeze;
class MyClass1 {
    constructor(private breeze: typeof br) {

    }
}

/*** or ***/

class MyClass2 {
    constructor(private br: typeof breeze) {

    }
}