It is a simple package for converting a C# class to typescript, where the user can flexibly customize the library to get the desired result.
this package was inspired by @YuvrajSagarRana/csharp-to-typescript solution.
npm i @factor-sef/cs-to-ts- After installation, you must import this package:
import Parser from '@factor-sef/cs-to-ts';
// or
const Parser = require('@factor-sef/cs-to-ts');- Next, you must create a new parser class:
const parser = new Parser(config)You can view this config options here
- In the end, you can pass any C # class in string format to the conversion method:
const codeForParse = `public class Address {
public int Id { get; set; }
public string Street { get; set; }
public string City { get; set; }
}`
const output = parser.parse(codeForParse);export class Address
{
Id: number;
Street: string;
City: string;
}| param | type | default | description |
|---|---|---|---|
| propertiesToCamelCase | boolean |
true |
transform properties names to camelCase |
| trimPostfixes | string | string[] |
[] |
Removes specified postfixes from property names, types & class names. |
| recursiveTrimPostfixes | boolean |
true |
Whether or not trim postfixes recursive. (e.g. with postfixes 'A' & 'B' PersonAAB will become PersonAA when it's false and Person when it's true) |
| ignoreInitializer | boolean |
true |
When true to initializers will be ignored |
| removeMethodBodies | boolean |
false |
If true then method bodies will be removed, else preserve the method body as-is |
| removeConstructors | boolean |
true |
When true to removing class constructor |
| methodStyle | 'signature' | 'lambda' | 'controller' |
'signature' |
'signature' to emit a method signature. 'lambda' to emit a lambda function. 'controller' to emit a lambda to call an async controller. |
| byteArrayToString | boolean |
true |
true to convert C# byte array type to Typescript string |
| dateTypes | string | string[] |
'Date | string' |
Convert C# types DateTime and DateTimeOffset to selected types |
| removeWithModifier | string[] |
[] |
Remove fields or properties with the given modifiers (Ex. if you want to remove private and internal members set to ['private', 'internal']) |
| removeNameRegex | string |
null |
If setted, any property or field that its name matches the given regex will be removed |
| classToInterface | boolean |
true |
When true to classes will be converted to interfaces |
| preserveModifiers | boolean |
false |
true to preserve fields and property modifiers |
| maxBodyDepth | number |
8 | Maximum body depth |
| maxExpressionDepth | number |
4 | Maximum expression depth |