TypeScript中的构建时/编译时装饰器

时间:2016-07-06 08:37:22

标签: typescript decorator

我认为这与TypeScript中decorators的目的不符;但是,是否可以使用根据具体情况更改输出js文件的装饰器?

用例1:

export class Foo {
  @debugMode
  private log() { /* implementation */ }
  public doSomething() {
    this.log(arguments);
  }
}

@debugMode装饰器,在构建时(gulp或..)中,在构建生产时删除方法及其调用方,以便在输出js中没有执行此方法的迹象文件。

@debugMode
@Route('UC2')
export class UC1Page{ }
在生产中构建时,

@debugMode将完全从输出js中删除类定义及其装饰器。

// this is not a valid syntax, only for the purpose of the usecase
// can achieve the same behavior using the first example
@debugMode doSomethingWeird(blah, blah);
@releaseMode sendGoogleAnalyticsInfo(blah, blah);

第一行将在生产中删除,而第二行将在开发环境中删除。

用例2(不一定在AngularJS中):

假设我们有以下文件夹结构:

[uc2]
-- uc2-component.ts
-- uc2-component.html
-- uc2-component.css

以及app-component.ts中的以下代码:

@Component({
  selector: 'my-foo',
  styleUrls: ['very/long/path/to/this/folder/uc2/uc2.component.css'],
  templateUrl: 'very/long/path/to/this/folder/uc2/uc2.component.html'
})
export class UC2Component { }

无论天气与否,这都是一种不好的做法,是否可以实际地向templateUrlstyleUrl提供HTML和CSS文件的正确路径 - 因为它们共享目录?这是为了避免对这些文件的路径进行硬编码,因此可以根据需要自由更改这3个文件的位置(这样我们只需要更改导入ts文件的路径)。 / p>

0 个答案:

没有答案