diff --git a/compiler/cpp/src/thrift/generate/t_erl_generator.cc b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
index 3ed13c9..f2c0a64 100644
--- a/compiler/cpp/src/thrift/generate/t_erl_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
@@ -132,6 +132,7 @@
   std::string render_member_type(t_field* field);
   std::string render_member_value(t_field* field);
   std::string render_member_requiredness(t_field* field);
+  std::string render_typedef_type(t_type* ttype);
   std::string render_string_type();
 
   //  std::string render_default_value(t_type* type);
@@ -478,12 +479,13 @@
 }
 
 /**
- * Generates a typedef. no op
+ * Generates a typedef.
  *
  * @param ttypedef The type definition
  */
 void t_erl_generator::generate_typedef(t_typedef* ttypedef) {
-  (void)ttypedef;
+  t_type* type = ttypedef->get_type();
+  f_types_hrl_file_ << "-type " << type_name(ttypedef) << "() :: " << render_typedef_type(type) << ".\n" << "\n";
 }
 
 
@@ -866,6 +868,44 @@
   }
 }
 
+string t_erl_generator::render_typedef_type(t_type* ttype) {
+  if (ttype->is_base_type()) {
+    t_base_type::t_base tbase = ((t_base_type*)ttype)->get_base();
+    switch (tbase) {
+    case t_base_type::TYPE_STRING:
+      return render_string_type();
+    case t_base_type::TYPE_BOOL:
+      return "boolean()";
+    case t_base_type::TYPE_I8:
+    case t_base_type::TYPE_I16:
+    case t_base_type::TYPE_I32:
+    case t_base_type::TYPE_I64:
+      return "integer()";
+    case t_base_type::TYPE_DOUBLE:
+      return "float()";
+    default:
+      throw "compiler error: unsupported base type " + t_base_type::t_base_name(tbase);
+    }
+  }
+   else if (ttype->is_enum()) {
+    return type_name(ttype) + "()";
+  } else if (ttype->is_struct() || ttype->is_xception() || ttype->is_typedef()) {
+    return type_name(ttype) + "()";
+  } else if (ttype->is_map()) {
+    if (maps_) {
+      return "map()";
+    } else {
+      return "dict:dict()";
+    }
+  } else if (ttype->is_set()) {
+    return "sets:set()";
+  } else if (ttype->is_list()) {
+    return "list()";
+  } else {
+    throw "compiler error: unsupported type " + ttype->get_name();
+  }
+}
+
 /**
  * Generates a struct
  */
