2015-12-10 2 views
2

Я новичок машинописи и я делаю какой-нибудь проект с машинописью + угловым 1.TypeScript: есть ли способ избавиться от «импорта»?

До сих пор, у меня есть определенные некоторые услуги, каждый со следующей структурой:

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

Мой вопрос приходит к: есть ли способ опустить эти импортные товары? Или сохранить их в одном файле, чтобы позже я мог ссылаться только на один файл, а не ссылаться на все службы, которые имеют разные модули?

Спасибо!

ответ

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