TSTypeFile Generate(IActivityMonitor monitor, TypeScriptGenerator g, Type i) { var f = g.GetTSTypeFile(monitor, i); var file = f.EnsureFile(); file.Body.Append("export interface ").Append(f.TypeName); bool hasInterface = false; foreach (Type b in i.GetInterfaces()) { if (!hasInterface) { file.Body.Append(" extends "); hasInterface = true; } else { file.Body.Append(", "); } AppendTypeName(file.Body, monitor, g, b); } file.Body.OpenBlock(); foreach (var p in i.GetProperties()) { file.Body.Append(g.ToIdentifier(p.Name)).Append(": "); AppendTypeName(file.Body, monitor, g, p.PropertyType); file.Body.Append(";").NewLine(); } file.Body.CloseBlock(); return(f); }