Объединить однофайловые модули в один модуль?

Используя TypeScript 2.0.10, я хочу объединить свои «модельные» модули, которые находятся в отдельных файлах, в одно определение.

/lib/models
        |-- model-a.ts
        |-- model-b.ts
        |-- model-c.ts
        |-- models.ts

Я должен импортировать это, используя относительные пути, например: import {ModelA} from "../../lib/models/model-a

Вместо этого я хочу импортировать так: `import {ModelA} из "моделей";

Я объединил все модели в models.ts:

/lib/models/models.ts

declare module models {
    export { ModelA } from "./model-a";
    export { ModelB } from "./model-b";
    export { ModelC } from "./model-c";
}

Я использую SystemJS, поэтому я могу сделать это:

paths: {
    "*": "dist/*",
    "models": "dist/models/models",
    "services": "dist/services/*",
    // ...
}

В настоящее время компиляция завершится ошибкой, потому что TypeScript не знает, как найти models/*, но это прекрасно работает в браузере, поскольку у меня настроены пути SystemJS. Есть ли способ настроить такое же отображение в tsconfig?

Редактировать Переформулировал эту кучу.


person Josh M.    schedule 20.11.2016    source источник


Ответы (1)


Отказ от ответственности: здесь не используются модули! (Но я думаю, что вы добьетесь того же эффекта).

Я не пробовал это с системным JS, но это должно сделать машинописный текст счастливым.

модели/index.ts

import { ModelA } from './model-a';
import { ModelB } from './model-c';

export {
    ModelA,
    ModelB
};

где-то еще.ts

import { ModelA, ModelB } from './models';
person drewwyatt    schedule 20.11.2016
comment
Спасибо. Мне все равно придется использовать относительные пути (например, ../../lib/models). Я действительно хочу упростить это, поскольку я не хочу вычислять относительный путь каждый раз, когда мне нужно импортировать модель или сервис (буквально каждую страницу/класс/и т. д. в моем проекте. - person Josh M.; 20.11.2016
comment
@ДжошМ. ой снэп! Я не думаю, что понял, что это то, что сделали модули. Если вы это выясните, пожалуйста, обновите этот вопрос своим решением. Мне сейчас очень интересно! - person drewwyatt; 22.11.2016