TypeScript:有没有办法摆脱'导入'?

时间:2015-12-10 11:23:49

标签: angularjs typescript

我是TypeScript初学者,我正在使用TypeScript + Angular 1做一些项目。

到目前为止,我已经定义了一些服务,每个服务都有以下结构:

<base href="/">

我的App.ts是:

/// <reference path="../App.ts"/>


module SomeModule {

export class SomeService {
    constructor(...) {
    ...
    }
}

var app = AppModule.getModule();
app.service("SomeService", SomeService);
}

每当我尝试引用具有不同模块名称的服务时,我都需要包括:

module AppModule{
  'use strict';
   angular.module('SomeApp', [...]);

   export var getModule:() => ng.IModule = () => {
    return angular.module('SomeApp');
   };
}

我的问题是:有没有办法省略这些进口?或者将它们存储在一个文件中,以便以后我只能引用一个文件而不是引用具有不同模块的所有服务?

谢谢!

1 个答案:

答案 0 :(得分:0)

您的代码有些问题。第一个是您应该仅使用<references>条评论参考类型定义文件*.d.ts而不是实际的源文件*.ts

第二个是你正在混合内部和外部模块和you should never do that

因此,您可以使用namespace关键字来使用内部模块。尽量避免使用module关键字,因为它是`命名空间的遗留版本。以下是一个基本示例:

// 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);