将单个文件模块合并为单个模块?

时间:2016-11-20 16:33:21

标签: typescript ecmascript-6 systemjs

使用TypeScript 2.0.10,我想将单独文件中的“模型”模块合并为一个单独的定义。

#include <iostream>

class wrapTable
 {
   private:
      static constexpr int table[] { 2, 3, 5, 7, 11, 13, 17, 19 };
      static constexpr int size { sizeof(table)/sizeof(table[0]) };

      friend constexpr int foo (int);
 };

constexpr int wrapTable::table[];

constexpr int foo (int x)
 { return (0 <= x && x < wrapTable::size) ? wrapTable::table[x] : 42; }

int main()
 {
   std::cout << "foo(3): " << foo(3) << std::endl; // print 7
   std::cout << "foo(9): " << foo(9) << std::endl; // print 42

   // compilation error: 'table' is a private member of 'wrapTable'
   // std::cout << "table(3): " << wrapTable::table[3] << std::endl;
 }

我必须使用相对路径导入它,例如:/lib/models |-- model-a.ts |-- model-b.ts |-- model-c.ts |-- models.ts

我想这样导入:`import {ModelA}来自“models”;

我已将所有模型合并为import {ModelA} from "../../lib/models/model-a

/lib/models/models.ts

models.ts

我正在使用SystemJS,所以我能够这样做:

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

目前,编译将失败,因为TypeScript不知道如何查找paths: { "*": "dist/*", "models": "dist/models/models", "services": "dist/services/*", // ... } ,但这在浏览器中工作正常我已配置SystemJS路径。有没有办法在models/*中设置这种相同的映射?

编辑重新编写此内容。

1 个答案:

答案 0 :(得分:0)

Disclaumer:这不使用模块!(但我认为你仍然可以达到同样的效果)。

我没有尝试使用系统JS,但这应该让打字稿很开心。

<强>模型/ index.ts

parent::ul/preceding-sibling::*[1][self::a]/@name

<强>某处-else.ts

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

export {
    ModelA,
    ModelB
};