TypeScript CodeDOM
$ dotnet add package Fonlow.TypeScriptCodeDomCoreCodeDOM in .NET (Framework) has come with 3 providers:
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":

CodeDOM covers almost every essential C# language features, however, not every features of such coverage is applicable to TypeScript.
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
;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: