Exemplo n.º 1
0
        /// <summary>
        /// Generic type, emit GenericType`2<A, B> as GenericType<A, B> 
        /// </summary>
        private static string GenericTypeToTypeScript(Type type, ToTypeScriptOptions options)
        {
            var result = new StringBuilder();
            if (options.IncludeNamespace(type))
            {
                result.Append($"{type.GetGenericTypeDefinition().Namespace.Replace('.', '_')}.");
            }

            var genericTypeDefinitionName = type.GetGenericTypeDefinition().Name;
            // generics type got a name like Foo`2, we parse only before the `
            var withoutAfterBacktick = genericTypeDefinitionName.Remove(genericTypeDefinitionName.IndexOf('`'));
            result.Append(withoutAfterBacktick);
            if (options.IncludeGenericArguments)
            {
                var args = type.GetGenericArguments()
                    .Select(t => t.ToTypeScript().ToString(options.IncludeNamespace, true, false))
                    .Join(", ");
                result.Append($"<{args}>");
            }
            return result.ToString();
        }