babel-generator: Add TypeScript support (#5896)

* babel-generator: Add TypeScript support

* Remove type declarations; not published from babylon

* Remove TODOs

* Consistently use `this.word` for tokens that are words
This commit is contained in:
Andy
2017-07-28 13:07:05 -07:00
committed by Henry Zhu
parent f83c83d49c
commit c1d07fd6db
284 changed files with 1450 additions and 51 deletions

View File

@@ -8,6 +8,16 @@ export function ClassDeclaration(node: Object, parent: Object) {
this.printJoin(node.decorators, node);
}
if (node.declare) {
this.word("declare");
this.space();
}
if (node.abstract) {
this.word("abstract");
this.space();
}
this.word("class");
if (node.id) {
@@ -59,10 +69,22 @@ export function ClassBody(node: Object) {
export function ClassProperty(node: Object) {
this.printJoin(node.decorators, node);
if (node.accessibility) {
this.word(node.accessibility);
this.space();
}
if (node.static) {
this.word("static");
this.space();
}
if (node.abstract) {
this.word("abstract");
this.space();
}
if (node.readonly) {
this.word("readonly");
this.space();
}
if (node.computed) {
this.token("[");
this.print(node.key, node);
@@ -71,6 +93,11 @@ export function ClassProperty(node: Object) {
this._variance(node);
this.print(node.key, node);
}
if (node.optional) {
this.token("?");
}
this.print(node.typeAnnotation, node);
if (node.value) {
this.space();
@@ -82,12 +109,28 @@ export function ClassProperty(node: Object) {
}
export function ClassMethod(node: Object) {
this._classMethodHead(node);
this.space();
this.print(node.body, node);
}
export function _classMethodHead(node) {
this.printJoin(node.decorators, node);
if (node.accessibility) {
this.word(node.accessibility);
this.space();
}
if (node.abstract) {
this.word("abstract");
this.space();
}
if (node.static) {
this.word("static");
this.space();
}
this._method(node);
this._methodHead(node);
}