public void ConvertSingleClassToInterface()
        {
            var propertyNames = new string[] { "MyPropertyString", "MyPropertyInt", "EnumProperty", "NullableDateTime", "GuidProperty" };
            var model         = new TypescriptModel();
            var result        = new TypescriptClassesAsInterfaceCreator().GetTypeFor(typeof(SomeClass), model);

            result.Match(primitive => Assert.Fail(),
                         tsclass => Assert.Fail(),
                         tsInerface =>
            {
                Assert.AreEqual(tsInerface.Name, typeof(SomeClass).Name);
                tsInerface.Content.Match(functionSignature => Assert.Fail(), property => Assert.IsTrue(propertyNames.Contains(property.Name)));
            },
                         tsenum => Assert.Fail(),
                         tsTypeParam => Assert.Fail());
        }
Example #2
0
        public TypescriptType GetTypeFor(Type type, TypescriptModel model)
        {
            if (model.knownTypes.ContainsKey(type))
            {
                return(model.knownTypes[type]);
            }
            else
            {
                var newClass = new TypescriptClass
                {
                    Name = NameWithoutGeneric(type)
                };
                model.knownTypes.Add(type, newClass.ToTypescriptType());
                newClass.BaseClass            = GetBaseClassFor(type.BaseType, model);
                newClass.Content              = new TypescriptClassContentList(GetClassContent(type, model));
                newClass.GenricTypeParameters = TypescriptTypeCreatorBase.GetGenericTypeParametersFor(type);

                return(newClass.ToTypescriptType());
            }
        }
Example #3
0
 protected virtual IEnumerable <TypescriptProperty> GetTypescriptProperties(Type type, TypescriptModel model)
 {
     return(type.GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public).Select(property => new TypescriptProperty
     {
         Name = property.Name,
         Accesability = TypescriptAccesModifier.@public,
         DefaultValue = new None <String>(),
         Type = typeCreator.GetTypeFor(property.PropertyType, model)
     }));
 }
Example #4
0
 protected virtual IEnumerable <TypescriptClassContent> GetClassContent(Type type, TypescriptModel model)
 {
     return(GetTypescriptProperties(type, model).Select(property => property.ToTypescriptClassContent()));
 }
Example #5
0
 protected virtual IOption <TypescriptBaseClass> GetBaseClassFor(Type baseType, TypescriptModel model)
 {
     if (baseType == typeof(Object))
     {
         return(new None <TypescriptBaseClass>());
     }
     return(new TypescriptBaseClass
     {
         Name = NameWithoutGeneric(baseType),
         GenericArguments = TypescriptTypeCreatorBase.GetGenericTypeParametersAsArguments(baseType)
     }.ToOption());
 }