README
View on GitHub ↗What is that?
You develop frontend applications with TypeScript and .NET Backend? You need Reinforced.Typings.
It converts .NET classes into TypeScript code. Suffering has ended - you don't need to write and maintain boring TypeScript glue code for your DTOs/ViewModels/APIs anymore - RT can generate it from C# app. Moreover, it integrates with MSBuild build process and (re)generates glue code every time you rebuild .NET backend. So you get immediately notified when backend's API/DTOs changed and frontend is broken.
Check out documentation to discover numbers of useful features (type substitutions, modules, code generators, fluent configuration, multi-file export, JSDOC).
Reinforced.Typings is available on NuGet.
PM> Install-Package Reinforced.Typings
Find out detailed information in Reinforced.Typings wiki
News
Version 1.6.7 released
- .NET 10 support. Do not search for 1.6.6 😊
Best to be used for
Exporting ViewModels
| C# | TypeScript | |
namespace MyApp
{
using Reinforced.Typings.Attributes;
|
⇨ |
module MyApp {
export interface IOrder
{
ItemName: string;
Quantity: number;
Subtotal: number;
IsPaid: boolean;
ClientName: string;
Address: string;
}
export class User
{
public FirstName: string;
public Email: string;
public Type: MyApp.UserType;
}
export enum UserType {
Two = 1,
}
}
|
...even complex ViewModels
| C# | TypeScript | |
namespace MyApp
{
using Reinforced.Typings.Attributes;
|
⇨ |
module MyApp {
export interface IPage
{
Orders: MyApp.IOrder[];
Cache: { [key:number]: MyApp.IOrder };
Tags: string[];
Things: any[];
}
}
|
Temporary disabling TypeScript compilation in your project
Now you will not stay powerless when generated typings fail your TypeScript build in project. See RtBypassTypeScriptCompilation configuration parameter.
Inheritance preservation
| C# | TypeScript | |
namespace MyApp
{
using Reinforced.Typings.Attributes;
|
⇨ |
module MyApp {
export interface IWithoutInterface
{
Boom: string;
}
export interface IEntity
{
Id: number;
}
export interface IUser extends MyApp.IEntity
{
Id: number;
Login: string;
}
}
|
Use fluent configuration
Details can be found on the corresponding wiki page
| C# | TypeScript | |
namespace MyApp
{
using Reinforced.Typings.Fluent;
using System.Web.Mvc;
|
⇨ |
module MyApp {
export interface ISelectListItem
{
Disabled: boolean;
Group: any;
Selected: boolean;
Text: string;
Value: string;
}
}
|
Reinforced.Typings.settings.xml: <RtConfigurationMethod>MyApp.Configuration.Configure</RtConfigurationMethod> | ||
Generate any custom glue code
Read more here.
| C# | TypeScript | |
namespace MyApp
{
using Reinforced.Typings.Fluent;
using System.Web.Mvc;
|
⇨ |
module MyApp {
export interface ISampleResponseModel
{
Message: string;
Success: boolean;
}
|