This repository was archived by the owner on May 22, 2025. It is now read-only.
This repository was archived by the owner on May 22, 2025. It is now read-only.
TypeScript's builtin helpers (for decorators etc.) fail Closure compilation #168
Closed
Description
When we compile a hello world Angular 2 app app.component.ts
with Tsickle it generates invalid es6 closure.
Input:
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: '<h1>Hello World</h1>'
})
export class AppComponent { }
Output:
goog.module('js.app.ts.app.component');var module = module || {id: 'js/app/ts/app.component.js'};
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var core_1 = goog.require('@angular.core');
let AppComponent = class AppComponent {
};
AppComponent = __decorate([
core_1.Component({
selector: 'my-app',
template: '<h1>Hello World</h1>'
}),
__metadata('design:paramtypes', [])
], AppComponent);
exports.AppComponent = AppComponent;
When we try to compile this with closure we get the error:
The body of a goog.module cannot reference this.
if we remove (this && this.__decorate) ||
and (this && this.__metadata) ||
closure no longer complains about this.
Metadata
Metadata
Assignees
Labels
No labels