/// <summary>
        /// Gets the javascript type name for the given type.
        /// </summary>
        /// <param name="propType">The property Type</param>
        /// <returns>The type name for that property type</returns>
        private string GetJavascriptTypeName(Type propType)
        {
            TypeCode code = Type.GetTypeCode(propType);

            string typeName;

            if (TypeUtils.IsNumericType(propType))
            {
                typeName = "Number";
            }
            else if (code == TypeCode.String)
            {
                typeName = "String";
            }
            else if (code == TypeCode.Boolean)
            {
                typeName = "Boolean";
            }
            else if (TypeUtils.IsList(propType))
            {
                typeName = "Array";
            }
            else
            {
                typeName = ClientScriptGenHelper.TryFindExtractedType(this, propType);
                if (string.IsNullOrEmpty(typeName))
                {
                    typeName = TypeUtils.GetTypeName(propType);
                }
            }

            return(typeName);
        }
        /// <summary>
        /// Gets the Typescript object type name for the given type.
        ///
        /// TODO: this could be better written and needs to support dictionaries
        /// </summary>
        /// <param name="propType">The property Type</param>
        /// <returns>The type name for that property type</returns>
        private string GetTypescriptTypeName(Type propType)
        {
            Type underlyingType = propType;

            if (propType.IsGenericType)
            {
                if (propType.GetGenericTypeDefinition() == typeof(Nullable <>) ||
                    propType.GetGenericTypeDefinition() == typeof(List <>))
                {
                    underlyingType = propType.GetGenericArguments()[0];
                }
            }
            TypeCode code = Type.GetTypeCode(underlyingType);
            string   typeName;

            if (TypeUtils.IsNumericType(underlyingType))
            {
                typeName = "number";
            }
            else if (code == TypeCode.String || code == TypeCode.DateTime)
            {
                typeName = "string";
            }
            else if (code == TypeCode.Boolean)
            {
                typeName = "boolean";
            }
            else
            {
                typeName = ClientScriptGenHelper.TryFindExtractedType(this, underlyingType);
                if (string.IsNullOrEmpty(typeName))
                {
                    typeName = "any";
                }
            }

            if (TypeUtils.IsList(propType))
            {
                typeName += "[]";
            }

            return(typeName);
        }