in scrooge-generator-typescript/src/main/scala/com/gu/scrooge/backend/typescript/TypescriptGenerator.scala [80:101]
def typescriptType(t: FunctionType): String = t match {
case Void => "void"
case OnewayVoid => "void"
case TBool => "boolean"
case TByte => "number"
case TI16 => "number"
case TI32 => "number"
case TI64 => "Int64"
case TDouble => "number"
case TString => "string"
case TBinary => "Buffer"
case n: NamedType => n.sid.toTitleCase.name
case MapType(k @ (TI16 | TI32 | TString | EnumType(_, _)), v, _) => {
s"{[key: ${typescriptType(k)}]: ${typescriptType(v)}}"
}
case MapType(k, v, _) => throw new ScroogeInternalException(s"Typescript maps can only have a string or a number as the key, found map<$k, $v>")
case SetType(x, _) => s"${typescriptType(x)}[]"
case ListType(x, _) => s"${typescriptType(x)}[]"
case r: ReferenceType =>
throw new ScroogeInternalException("ReferenceType should not appear in backend")
case _ => throw new ScroogeInternalException("unknown type")
}