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
中声明的模块breezebreeze和this.breeze是同一个对象
我的问题是如何使用AngularJs标准注入,就像我在最后一行中做的那样,当我将breeze服务注入元数据服务时,然后当我编写元数据类时如何使用" this.breeze"并具有类似智能感知的TypeScript优势。
最后,可能将this.breeze看作是用于智能感知目的的breeze模块,还是存在实现此方案的其他方式?
答案 0 :(得分:4)
您可以使用typeof
来引用模块的类型。在这种情况下,由于您具有名为breeze
的参数,因此您需要重命名参数或为全局符号breeze
创建导入,以便您可以实际引用它:
import br = breeze;
class MyClass1 {
constructor(private breeze: typeof br) {
}
}
/*** or ***/
class MyClass2 {
constructor(private br: typeof breeze) {
}
}