Skip to content

Commit 3ad1b2c

Browse files
committed
Merge pull request #213 from prezi/optimize-typescript-headers
Optimize typescript headers
2 parents 34909d4 + 8748558 commit 3ad1b2c

File tree

3 files changed

+10
-42
lines changed

3 files changed

+10
-42
lines changed

spaghetti-typescript-support/src/main/groovy/com/prezi/spaghetti/typescript/access/TypeScriptModuleAccessorGeneratorVisitor.groovy

+3-25
Original file line numberDiff line numberDiff line change
@@ -12,35 +12,13 @@ class TypeScriptModuleAccessorGeneratorVisitor extends AbstractTypeScriptGenerat
1212

1313
@Override
1414
String visitModuleNode(ModuleNode node) {
15-
"""export class ${node.alias} {
16-
17-
private static ${MODULE}:any = ${GeneratorUtils.createModuleAccessor(node.name)};
18-
19-
${node.methods*.accept(new MethodVisitor(node)).join("")}
15+
"""interface ${node.alias} {
16+
${node.methods*.accept(new MethodVisitor()).join("")}
2017
}
18+
export var ${node.alias}:${node.alias} = ${GeneratorUtils.createModuleAccessor(node.name)};
2119
"""
2220
}
2321

2422
private static class MethodVisitor extends AbstractTypeScriptMethodGeneratorVisitor {
25-
26-
private final ModuleNode module
27-
28-
MethodVisitor(ModuleNode module) {
29-
this.module = module
30-
}
31-
32-
@Override
33-
String visitMethodNode(MethodNode node) {
34-
def returnType = node.returnType.accept(this)
35-
def typeParams = node.typeParameters ? "<" + node.typeParameters*.name.join(", ") + ">" : ""
36-
def params = node.parameters*.accept(this).join(", ")
37-
def paramNames = node.parameters*.name.join(", ")
38-
39-
return \
40-
""" static ${node.name}${typeParams}(${params}):${returnType} {
41-
${returnType == "void" ? "" : "return "}${module.alias}.module.${node.name}(${paramNames});
42-
}
43-
"""
44-
}
4523
}
4624
}

spaghetti-typescript-support/src/main/groovy/com/prezi/spaghetti/typescript/type/enums/TypeScriptOpaqueEnumGeneratorVisitor.groovy

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import com.prezi.spaghetti.typescript.AbstractTypeScriptGeneratorVisitor
66
class TypeScriptOpaqueEnumGeneratorVisitor extends AbstractTypeScriptGeneratorVisitor {
77
@Override
88
String visitEnumNode(EnumNode node) {
9-
"""export enum ${node.name} {
9+
"""export declare enum ${node.name} {
1010
// Enum members are not generated for transitive dependencies. To generate
1111
// the enum type with members, depend directly on the containing module.
1212
}

spaghetti-typescript-support/src/test/groovy/com/prezi/spaghetti/typescript/access/TypeScriptModuleAccessorGeneratorVisitorTest.groovy

+6-16
Original file line numberDiff line numberDiff line change
@@ -27,27 +27,17 @@ module com.example.test {
2727
def result = parseAndVisitModule(definition, new TypeScriptModuleAccessorGeneratorVisitor())
2828

2929
expect:
30-
result == """export class TestModule {
31-
32-
private static module:any = Spaghetti["dependencies"]["com.example.test"]["module"];
33-
30+
result == """interface TestModule {
3431
/**
3532
* Initializes module.
3633
*/
37-
static initModule(a:number, b?:number):void {
38-
TestModule.module.initModule(a, b);
39-
}
40-
static doSomething():string {
41-
return TestModule.module.doSomething();
42-
}
43-
static doStatic(a:number, b:number):number {
44-
return TestModule.module.doStatic(a, b);
45-
}
46-
static returnT<T>(t:T):com.example.test.MyInterface<T> {
47-
return TestModule.module.returnT(t);
48-
}
34+
initModule(a:number, b?:number):void;
35+
doSomething():string;
36+
doStatic(a:number, b:number):number;
37+
returnT<T>(t:T):com.example.test.MyInterface<T>;
4938
5039
}
40+
export var TestModule:TestModule = Spaghetti["dependencies"]["com.example.test"]["module"];
5141
"""
5242
}
5343
}

0 commit comments

Comments
 (0)