public void TestInterfaceGen() { var intf = new InterfaceType("testClass"); intf.Members.Add(new PropertyMember("testProperty") { MemberType = new TypescriptTypeReference(new StringType()) }); intf.Members.Add(new PropertyMember("testProperty2") { Accessibility = AccessibilityEnum.Private, IsOptional = true, MemberType = new TypescriptTypeReference(new NumberType()) }); intf.Members.Add(new PropertyMember("testProperty3") { Accessibility = AccessibilityEnum.Public, MemberType = new TypescriptTypeReference(new BoolType()) }); var fun = new FunctionDeclarationMember("myFn") { ResultType = PrimitiveType.String, Accessibility = AccessibilityEnum.Public }; intf.Members.Add(fun); Assert.AreEqual(@"interface testClass { testProperty: string; private testProperty2?: number; public testProperty3: boolean; public myFn(): string; }", testGen(intf)); }
public virtual FunctionDeclarationMember GenerateMethodDeclaration(MethodInfo method) { var result = new FunctionDeclarationMember(NamingStrategy.GetMethodName(method)) { ExtraData = { { SOURCEMEMBER_KEY, method } } }; if (method.ReturnType != typeof(void)) { result.ResultType = GenerateFromType(method.ReturnType); } else { result.ResultType = PrimitiveType.Void; } foreach (var p in method.GetParameters()) { var par = GenerateMethodParameter(p); result.Parameters.Add(par); } //generics if (method.IsGenericMethod) { foreach (var garg in method.GetGenericArguments()) { result.GenericParameters.Add(new GenericParameter(NamingStrategy.GetGenericArgumentName(garg)) { ExtraData = { { SOURCETYPE_KEY, garg } } }); } } return(result); }
public virtual FunctionDeclarationMember RewriteFunctionDeclarationMember(FunctionDeclarationMember fn) { var result = new FunctionDeclarationMember(fn.Name) { Accessibility = RewriteAccessibility(fn.Accessibility), Comment = RewriteComment(fn.Comment), ExtraData = RewriteExtraData(fn), ResultType = RewriteTypeReference(fn.ResultType), }; result.GenericParameters.AddRange(fn.GenericParameters.Select(RewriteGenericParameter).Where(x => x != null)); result.Parameters.AddRange(fn.Parameters.Select(RewriteFunctionParameter).Where(x => x != null)); return(result); }
public void TestFunctions() { var cls = new ClassType("testFunctions"); { var fn = new FunctionDeclarationMember("fn1"); cls.Members.Add(fn); } { var fn = new FunctionDeclarationMember("fn2") { ResultType = new ArrayType(cls) }; cls.Members.Add(fn); } { var fn = new FunctionDeclarationMember("fn3") { Parameters = { new FunctionParameter("a") { ParameterType = PrimitiveType.Number }, new FunctionParameter("b") { ParameterType = PrimitiveType.Boolean, IsOptional = true }, new FunctionParameter("c"), new FunctionParameter("d") { IsRest = true, ParameterType = new ArrayType(PrimitiveType.String) }, } }; cls.Members.Add(fn); } { var fn = new FunctionDeclarationMember("fn4") { GenericParameters = { new GenericParameter("T"), new GenericParameter("T2") { Constraint = cls }, }, Parameters = { new FunctionParameter("p1") { ParameterType = new TypescriptTypeReference("T2") }, } }; cls.Members.Add(fn); } { var fn = new FunctionMember("fn5", new RawStatements("return true;")) { Parameters = { new FunctionParameter("arg") { ParameterType = PrimitiveType.Boolean } }, }; cls.Members.Add(fn); } { var fn = new FunctionMember("fn6", null) { Parameters = { new FunctionParameter("arg") { ParameterType = PrimitiveType.String, DefaultValue = new RawStatements("'42'") } }, }; cls.Members.Add(fn); } Assert.AreEqual(@" class testFunctions { fn1(); fn2(): testFunctions[]; fn3(a: number, b?: boolean, c, ...d: string[]); fn4<T, T2 extends testFunctions>(p1: T2); fn5(arg: boolean) { return true; } fn6(arg: string = '42') { } } ".Trim(), testGen(cls)); }
public virtual void VisitFunctionDeclarationMember(FunctionDeclarationMember fn) { VisitFunctionMemberBase(fn); }