Fonlow.TypeScriptCodeDomCore 3.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Fonlow.TypeScriptCodeDomCore --version 3.1.0                
NuGet\Install-Package Fonlow.TypeScriptCodeDomCore -Version 3.1.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Fonlow.TypeScriptCodeDomCore" Version="3.1.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Fonlow.TypeScriptCodeDomCore --version 3.1.0                
#r "nuget: Fonlow.TypeScriptCodeDomCore, 3.1.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Fonlow.TypeScriptCodeDomCore as a Cake Addin
#addin nuget:?package=Fonlow.TypeScriptCodeDomCore&version=3.1.0

// Install Fonlow.TypeScriptCodeDomCore as a Cake Tool
#tool nuget:?package=Fonlow.TypeScriptCodeDomCore&version=3.1.0                

CodeDOM in .NET (Framework) has come with 3 providers:

  1. CSharpCodeProvider
  2. VBCodeProvider
  3. JScriptCodeProvider

While JSCriptCodeProvider is good enough for generating JavaScript codes for Internet Explorer however IE had been discoutinued. TypeScriptCodeProvider provides extra benefits over a "JavaScript Provider":

  1. Strongly typed interfaces and function prototypes for validation during design time and compile time.
  2. Re-use some portion of CodeDOM codes if a code generator toolset like WebApiClientGen and OpenApiClientGen targets multiple OO languages.
  3. Naturally and inheriently adapt the evolution of the JavaScript standard as long as TypeScript will.
  4. Live well with TypeScript frameworks like Angular 2+ and Auralia. And with Angular Reactive Forms, runtime validation could become possible, similar to the use cases of using validation attributes to decorate a member property of a .NET class.

TypeScript CodeDOM logo

What Supported and Not

CodeDOM cover almost every essential C# language features, however, not every features of such coverage is applicable to TypeScript.

GeneratorSupport Enum

bool ICodeGenerator.Supports(GeneratorSupport supports)
{
	return (supports & supported) != 0;
}

const GeneratorSupport supported = GeneratorSupport.ArraysOfArrays
	| GeneratorSupport.MultidimensionalArrays
	| GeneratorSupport.TryCatchStatements
	| GeneratorSupport.DeclareValueTypes
	| GeneratorSupport.DeclareEnums
	| GeneratorSupport.StaticConstructors
	| GeneratorSupport.DeclareInterfaces
	| GeneratorSupport.DeclareDelegates
	| GeneratorSupport.NestedTypes
	| GeneratorSupport.MultipleInterfaceMembers
	| GeneratorSupport.ComplexExpressions
	| GeneratorSupport.GenericTypeReference
	| GeneratorSupport.GenericTypeDeclaration
   ;

Supported CodeDOM Classes

Most supported classes are covered by unit testing, while some are covered by integration testing in some code generator projects, marked as "Indirectly" in the table below.

Class Unit Tests
CodeArgumentReferenceExpression TestCodeArgumentReferenceExpression
CodeArrayCreateExpression TestCodeArrayCreateExpression*
CodeArrayIndexerExpression TestCodeArrayIndexerExpression*
CodeAssignStatement TestCodeAssignStatement
CodeAttributeDeclaration / CodeAttributeDeclarationCollection Test*Decorators
CodeAttributeArgument / CodeAttributeArgumentCollection Indirectly
CodeBaseReferenceExpression TestCodeBaseReferenceExpression
CodeBinaryOperatorExpression TestCodeIterationStatement
CodeBinaryOperatorType TestCodeIterationStatement
CodeCastExpression TestCodeCastExpression
CodeCatchClause / CodeCatchClauseCollection TestCodeTryCatchFinallyStatement, TestCodeTryCatchFinallyStatement
CodeCommentStatement / CodeCommentStatementCollection TestCodeCommentStatement*
CodeCompileUnit Indirectly
CodeConditionStatement TestCodeConditionStatement*
CodeConstructor Indirectly
CodeDirective / CodeDirectiveCollection Indirectly with CodeRegionDirective
CodeTypeDelegate TestCodeTypeDelegate
CodeExpressionStatement TestCodeIterationStatement
CodeExpression TestCodeExpression
CodeExpressionCollection Indirectly
CodeFieldReferenceExpression TestCodeFieldReferenceExpression
CodeIndexerExpression TestCodeIterationStatement
CodeIterationStatement TestCodeIterationStatement
CodeMemberField TestCodeTypeDeclarationWithMembers
CodeMemberMethod TestCodeTypeDeclarationWithMethodAndParameterDecorators
CodeMemberProperty TestCodeTypeDeclarationWithPropertyMembers
CodeMethodInvokeExpression TestCodeIterationStatement, TestCodeTryCatchFinallyStatement, TestCodeTryCatchStatement
CodeMethodReferenceExpression TestCodeMethodReferenceExpression, TestCodeMethodReferenceExpressionGeneric, TestCodeIterationStatement
CodeMethodReturnStatement TestCodeMethodReturnStatement
CodeNamespace / CodeNamespaceCollection Indirectly
CodeObject Indirectly in many derived classes
CodeObjectCreateExpression TestCodeObjectCreateExpression*
CodeParameterDeclarationExpression / CodeParameterDeclarationExpressionCollection TestTuple4Callback, TestTupleCallbackSnipet, TestTupleCallbackSnipet, TestCodeParameterDeclarationExpression
CodePrimitiveExpression TestCodeArrayCreateExpressionWithInit, and many
CodePropertyReferenceExpression TestCodePropertyReferenceExpression
CodeRegionDirective TestPersonWithRegions, Test2TypesWithRegions
CodeSnippetExpression TestCodeArrayIndexerExpression, and many
CodeSnippetStatement TestCodeConditionStatement, and many
CodeSnippetTypeMember Indirectly
CodeStatement / CodeStatementCollection TestCodeConditionStatementElse, and many
CodeThisReferenceExpression TestCodePropertyReferenceExpression, and many
CodeThrowExceptionStatement TestCodeThrowExceptionStatement
CodeTryCatchFinallyStatement TestCodeTryCatchFinallyStatement, TestCodeTryFinallyStatement, TestCodeTryCatchStatement
CodeTypeDeclaration TestCodeTypeDeclaration*
CodeTypeDeclarationCollection Indirectly with namespace.Types
CodeTypeMember / CodeTypeMemberCollection Indirectly
CodeTypeOfExpression TestCodeTypeOfExpression
CodeTypeParameter / CodeTypeParameterCollection Indirectly
CodeTypeReference / CodeTypeReferenceCollection TestCodeArrayCreateExpressionWithoutInit, and many
CodeTypeReferenceExpression TestCodeTypeReferenceExpression, TestCodeIterationStatement
CodeVariableDeclarationStatement TestCodeVariableDeclarationStatement*
CodeVariableReferenceExpression TestCodeVariableReferenceExpression, and many

Hints:

  • There are integration tests in PocoToTS, WebApiClientGen and OpenApiClientGen, covering some classes like XxxCollection.
Examples Utilizing TypeScriptProvider
Generated Code Examples

CodeDOM Features Applicable to TypeScript but not Supported in TypeScriptProvider

CodeDOM Features Not Applicable to TypeScript

Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Fonlow.TypeScriptCodeDomCore:

Package Downloads
Fonlow.Poco2TsCore

Generate data model interfaces in TypsScript from POCO classes. This has been used in POCO2TS.exe and Strongly Typed Client API for Web API.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Fonlow.TypeScriptCodeDomCore:

Repository Stars
zijianhuang/webapiclientgen
Strongly Typed Client API Generators generate strongly typed client APIs in C# .NET and in TypeScript for jQuery and Angular 2+ from ASP.NET Web API and .NET Core Web API
Version Downloads Last updated
3.4.0 215 11/21/2024
3.3.0 1,616 6/23/2024
3.2.2 376 6/12/2024
3.2.1 1,527 2/27/2024
3.2.0 311 2/21/2024
3.1.1 361 2/10/2024
3.1.0 222 2/9/2024
3.0.0 315 2/1/2024
2.9.2 563 12/17/2023
2.9.1 297 12/16/2023
2.9.0 469 12/15/2023
2.8.1 320 11/7/2023
2.8.0 410 11/7/2023
2.7.0 914 11/16/2022
2.6.1 5,736 6/14/2022
2.6.0 3,132 2/5/2022
2.5.0 3,033 2/12/2021
2.3.2 2,865 6/28/2020
2.3.1 3,936 4/16/2020
2.3.0 6,907 2/16/2020
2.2.1 529 2/16/2020
2.2.0 3,787 11/26/2019
2.1.0 2,657 11/11/2019
2.0.1 10,881 12/6/2018
2.0.0 1,617 9/1/2018
1.9.1 2,266 8/27/2018
1.9.0 1,719 8/9/2018
1.8.1 2,903 5/7/2018

More CodeDOM classes supported to maximize the intersection of CodeDOM and TypeScript language features.