module SomeModule {export class SomeService { constructor(...) { ... }}var app ">
我是一个TypeScript初学者,我正在用TypeScript + Angular 1做一些项目。
到目前为止,我已经定义了一些服务,每个服务都具有以下结构:
/// <reference path="../App.ts"/>
module SomeModule {
export class SomeService {
constructor(...) {
...
}
}
var app = AppModule.getModule();
app.service("SomeService", SomeService);
}
我的App.ts在哪里:
module AppModule{
'use strict';
angular.module('SomeApp', [...]);
export var getModule:() => ng.IModule = () => {
return angular.module('SomeApp');
};
}
当我尝试引用具有不同模块名称的服务时,我需要包括:
import SomeService = SomeModule.SomeService;
我的问题是:有没有办法省略这些导入?或者将它们存储在一个文件中,这样我以后只能引用一个文件,而不是引用所有具有不同模块的服务?
谢谢!
发布于 2015-12-10 11:58:54
你的代码有几处地方有问题。第一个是你应该只使用<references>
注释,引用类型定义文件*.d.ts
,而不是实际的源文件*.ts
。
第二个问题是你混合了内部和外部模块以及you should never do that。
因此您可以使用namespace
关键字来使用内部模块。尽量避免使用module
关键字,因为它是` `namespace的旧版本。下面是一个基本的例子:
// some_module.ts
namespace AppModule.SomeModule {
export class SomeService {
constructor() {
// ...
}
}
}
// app.ts
namespace AppModule {
angular.module('SomeApp', []);
export function getModule() {
return angular.module('SomeApp');
}
}
var app = AppModule.getModule();
app.service("SomeService", AppModule.SomeModule.SomeService);
对于外部模块,相同的代码将如下所示:
// some_module.ts
class SomeService {
constructor() {
// ...
}
}
export default SomeService;
// app.ts
angular.module('SomeApp', []);
function getModule() {
return angular.module('SomeApp');
}
export default getModule;
// main.ts
import getModule from "./app";
import SomeService from "./some_module";
var app = getModule();
app.service("SomeService", SomeService);
https://stackoverflow.com/questions/34200652
复制相似问题