在angular1中,我们以这种方式定义常量,
angular.module('taskApp', [
'ui.router',
'angular-loading-bar',
'ngMessages',
])
.constant('url', {
BASE: 'http://localhost:3222',
BASE_API: 'http://localhost:3222/v1'
});
然后我可以将它注入我想要的任何模块中,
Auth.$inject = ['$http', 'url'];
function Auth($http, url)
现在使用打字稿,我也想这样做,我已经看过这种方法:Inject Angular Constants in TypeScript,这似乎没问题,但不是我正在寻找的方法。
从我的研究中
static $inject = ["$resource", "url"];
constructor(private $resource: ng.resource.IResourceService, private url: ng.IModule)
我正在使用IModule,因为它是angular&#39s的tsd文件中的唯一提示
/**
* Register a constant service, such as a string, a number, an array, an object or a function, with the $injector. Unlike value it can be injected into a module configuration function (see config) and it cannot be overridden by an Angular decorator.
*
* @param name The name of the constant.
* @param value The constant value.
*/
constant(name: string, value: any): IModule;
constant(object: Object): IModule;
但无法找到正确的属性来检索我的变量
答案 0 :(得分:2)
一种方法是定义一个描述常量的接口。
interface URL_CONSTANTS {
BASE: string,
BASE_API: string
}
然后你就可以使用它作为注入常数的类型。
static $inject = ["$resource", "url"];
constructor(private $resource: ng.resource.IResourceService, private url: URL_CONSTANTS)