每类文件方法和模块内部类

时间:2016-01-26 23:31:30

标签: typescript

出于可读性原因,每个TypeScript文件只有一个类。

档案TypeScript/Components/MyComponent/A.ts

namespace MyComponent {
  export class A {...}

档案TypeScript/Components/MyComponent/B.ts

namespace MyComponent {
  export class B {...}

每个组件文件夹都包含tsconfig.jsonoutFile选项,因此每个组件可以获得一个合并的js文件mycomponent.js,而无需显式引用同一组件中的任何类。

一切正常但我不喜欢将内部模块MyComponent转换为多个IIFE:

var MyComponent;
(function (MyComponent) {
  ...
  MyComponent.A = A;
})(MyComponent || (MyComponent = {}));

var MyComponent;
(function (MyComponent) {
  ...
  MyComponent.B = B;
})(MyComponent || (MyComponent = {}));

我可以告诉TypeScript只为MyComponent生成一个IIFE,类似于在一个模块内部和一个文件中定义多个类时的方式吗?如果我基于多个ts文件生成一个js文件,则编译器不应该看到模块被重用"然后将类合并到一个模块中?

同样,如果只有MyComponent内部而不是外部可见的课程,那就太棒了。现在我必须使用export公开每个类,否则即使在同一个模块中也会出现Cannot find name ...编译错误。

我正在使用TypeScript 1.7。我也没有使用任何特殊的模块。我只是将合并的组件js-file发送给客户端。

1 个答案:

答案 0 :(得分:0)

  

我可以告诉TypeScript只为MyComponent生成一个IIFE,类似于在一个模块内部和一个文件中定义多个类时的操作方式吗?

TypeScript编译器目前不提供此优化。正在讨论TypeScript缩小:https://github.com/Microsoft/TypeScript/issues/8