我用一堆静态实用函数设置了一个类。
// utils.ts
class Utils {
public static blank(anything) {
if (_.isNil(anything) || anything === "") {
return true;
}
return false;
};
// ...
}
window.Utils = Utils;
我将此作为常量注入我的角度应用程序:
angular.module("myApp", []).constant("Utils", window.Utils);
然后我可以在我的控制器或提供者中使用它:
class MyCtrl {
constructor(private $scope, private Utils: Utils, private MyService: MyService) { }
// ...
}
angular.module("myApp").controller("MyCtrl", MyCtrl);
然而,当我编译时,我得到了这个错误:
javascripts/admin/controllers/my_ctrl.ts(6,29): error TS2339:
Property 'blank' does not exist on type 'Utils'.
如何在将角色控制器中的常量注入角度控制器时,如何获得有关静态方法的正确类型信息?
答案 0 :(得分:0)
正确的注入private Utils
类型不是Utils
,这意味着类Utils
的实例化实例。
正确的类型是typeof Utils
,它告诉TypeScript private Utils
是类本身(或者更确切地说,类似于Utils类的东西),而不是班级的实例。
您还需要为类型 Utils或参数 Utils使用其他名称。为TypeScripts typeof
传递的一元表达式将在其范围中包含参数,因此只需将:Utils
更改为:typeof Utils
将导致有关循环引用的错误。
这样的事情可以解决问题
constructor(private $scope, private Utils: typeof window.Utils, private MyService: MyService){ }