in src/languages/go.ts [959:1004]
private renderType(
typeNode: ts.Node,
typeSymbol: ts.Symbol | undefined,
type: ts.Type | undefined,
isPtr: boolean,
fallback: string,
renderer: GoRenderer,
): string {
if (type === undefined) {
return fallback;
}
const jsiiType = determineJsiiType(renderer.typeChecker, type);
const doRender = (jType: JsiiType, asPtr: boolean, typeSym: ts.Symbol | undefined): string => {
const prefix = asPtr ? '*' : '';
switch (jType.kind) {
case 'unknown':
return fallback;
case 'error':
renderer.report(typeNode, jType.message);
return fallback;
case 'map':
return `map[string]${doRender(jType.elementType, true, jType.elementTypeSymbol)}`;
case 'list':
return `[]${doRender(jType.elementType, true, jType.elementTypeSymbol)}`;
case 'namedType':
return this.goName(jType.name, renderer, typeSym);
case 'builtIn':
switch (jType.builtIn) {
case 'boolean':
return `${prefix}bool`;
case 'number':
return `${prefix}f64`;
case 'string':
return `${prefix}string`;
case 'any':
return 'interface{}';
case 'void':
return '';
}
}
};
return doRender(jsiiType, isPtr, typeSymbol);
}