Voy a comenzar a usarlo TypeScript
en mi proyecto de cliente HTML que pertenece a un proyecto MVC con un modelo de dominio de marco de entidad que ya está allí. Quiero que mis dos proyectos (del lado del cliente y del lado del servidor) estén totalmente separados ya que dos equipos trabajarán en esto ... JSON y REST se utilizan para comunicar objetos de un lado a otro.
Por supuesto, mis domain
objetos en el lado del cliente deben coincidir con los objetos en el lado del servidor. En el pasado, normalmente lo hacía manualmente. ¿Hay alguna manera de reutilizar mis definiciones de clase C # (especialmente de las POJO
clases en mi modelo de dominio) para crear las clases correspondientes en TypeScript "?
javascript
typescript
pabloelustondo
fuente
fuente
Respuestas:
Actualmente no hay nada que asigne C # a TypeScript. Si tiene muchos POCO o cree que pueden cambiar con frecuencia, puede crear un convertidor, algo simple en la línea de ...
A
También hay una discusión sobre Codeplex sobre la generación automática desde C # .
Solo para mantener las cosas actualizadas, TypeLite puede generar interfaces TypeScript desde C #:
http://type.litesolutions.net/
fuente
Web Essentials permite compilar archivos C # en archivos TypeScript
.d.ts
al guardar. Luego, podría hacer referencia a las definiciones de sus.ts
archivos.fuente
TypeLite y T4TS de arriba se veían bien, solo elegí uno, TypeLite, lo bifurqué para obtener soporte para
Luego necesitaba interfaces C # y pensé que era hora de hacer lo mío y escribí un script T4 simple que solo hace lo que necesito. También incluye Enums . No se requiere repositorio, solo <100 líneas de T4.
Uso
Sin biblioteca, sin NuGet, solo este simple archivo T4 - use "agregar elemento" en Visual Studio y elija cualquier plantilla T4. Luego péguelo en el archivo. Adapte cada línea con "ACME" en ella. Para cada clase de C # agregue una línea
El orden importa, se utilizará cualquier tipo conocido en las siguientes interfaces. Si usa solo interfaces, la extensión del archivo puede ser .d.ts , para las enumeraciones necesita un archivo .ts , ya que se crea una instancia de una variable.
Personalización
Hackea el guión.
El siguiente nivel del script será crear la interfaz de servicio a partir de la clase MVC JsonController.
fuente
typeof(ParticleKind)
en tuEnum<T>
. ¿Seguro que debería ser asítypeof(T)
? También debe actualizarbool
paraboolean
versiones posteriores de TypeScriptconst enum
s. Gracias por el ejemplo. Estuvo muy cerca y obtuve un resultado de trabajo mucho más rápido.Si usa vscode, puede usar mi extensión csharp2ts que hace exactamente eso.
Simplemente seleccione el código C # pegado y ejecute el
Convert C# to TypeScript
comando desde la paleta de comandos Un ejemplo de conversión:a
fuente
Este es mi enfoque para resolverlo. Declare sus clases de C # con un atributo y se generarán archivos .d.ts (usando transformaciones T4). Hay un paquete en nuget y la fuente está disponible en github . Todavía estoy trabajando en el proyecto, pero el soporte es bastante extenso.
fuente
Si usa Visual Studio, agregue la extensión Typewriter.
Galería de Visual Studio
Sitio web / documentación
Actualizar
Con Web Essentials instalado en VS 2015, puede hacer clic con el botón derecho en el archivo de clase, luego> Web Essentials> Crear archivo Typecript Intellisense en el menú contextual.
fuente
Prueba el marco de Reinforcement.Typings. Parece que resuelve tu problema.
Navegue a su POCO y agregue el
[TsInterface]
atributo encima de élDescubra el código TypeScript generado en el
%Your_Project_Directory%/Scripts/project.ts
archivo y agréguelo al proyecto manualmenteproject.ts
en su otro código TypeScript.Ver más detalles en la wiki de documentación
fuente
He creado una pequeña utilidad que puede generar interfaces TypeScript a partir de clases C #. Está disponible como paquete NuGet . La documentación detallada se puede encontrar en la página web del proyecto .
fuente
Por favor, eche un vistazo a esta biblioteca. Máquina de escribir
Convierte no solo clases, enumeraciones, interfaces, etc., sino también los controladores api, lo cual es simplemente increíble.
Además, hace esto tan pronto como guarda el archivo .cs de origen, por lo que no tengo que activar ninguna herramienta externa. Guarde .cs y obtendrá .ts actualizados
fuente
Tengo una pequeña solución que usa plantillas T4 ( ver fuente ).
Pasas de cualquier CLR POCO:
A una interfaz de TypeScript:
fuente
Puede utilizar el proyecto de código abierto NSwag : En la GUI, puede seleccionar la clase .NET de una DLL .NET existente y generar la interfaz TypeScript para ella.
El proyecto también proporciona herramientas de línea de comandos y soporte para plantillas T4, así como generación de código de cliente para controladores Web API ...
fuente
Si necesita crear un archivo separado para cada clase / interfaz de TypeScript generada (es decir, en una forma de "clase única por archivo"), puede probar TypeGen . Es una herramienta que puede usar desde la Consola del Administrador de paquetes para generar archivos TypeScript basados en sus clases / enumeraciones de C #. Actualmente admite:
además de algunas características adicionales. También es de código abierto (puedes consultarlo en github ).
fuente
¿Qué tal si fuera de la otra manera?
Echa un vistazo a erecruit TypeScript Translator . Viene con soporte C # listo para usar, pero en realidad está basado en plantillas (usa Nunjucks para renderizar), lo que significa que puede generar cualquier otra cosa: VB.NET, F #, C ++, XML, SQL, lo que sea que pueda codificar con una plantilla.
Funciona como un programa de consola .NET, programa NodeJS (para aquellos que no están en Windows) o como una extensión de Visual Studio , completa con la funcionalidad de generar al guardar. E incluye compatibilidad con MSBuild, solo para hacer feliz a su servidor de compilación. :-)
fuente
También puede usar esto: https://github.com/pankleks/TypeScriptBuilder
Esta pequeña biblioteca genera una definición de tipo TypeScript basada en tipos de C #. Úselo directamente en su proyecto backend C # para generar código para su proyecto frontend TypeScript. También puede escribir una pequeña aplicación de consola para generar código mediante herramientas de compilación previa.
¡Funciona en el marco de trabajo Full & NET Core!
Instalar por nuget:
Install-Package TypeScriptBuilder
Funciones compatibles
any
para tipos que no se pueden convertirMás descripción: https://github.com/pankleks/TypeScriptBuilder/blob/master/README.md
fuente
TypeScriptBuilder
y se ve excelente hasta ahora; ¡Hurra por la compatibilidad con .NET Core!Los chicos echan un vistazo a https://github.com/reinforcement/ Reinforced.Typings . He estado jugando con plantillas typelite y t4 durante los últimos días y terminé con este proyecto. Es súper simple y funciona como un encanto. Simplemente obtenga el paquete, modifique el archivo de configuración (es como 10 segundos) y compile. Todo se hace automáticamente sin problemas. ¡Bendito sea el autor!
Lo malo de las plantillas T4 es que una vez que construye desde VS, los ensamblajes escaneados se bloquean y debe reiniciar VS (¿qué tan tonto es eso?). Hay algunas soluciones en T4 Toolbox + algunas directivas de limpieza de VS, pero ninguna de ellas funcionó para mí.
fuente
Me gusta la solución citykid. Lo había extendido un poco. Entonces, la solución también se basa en la técnica de generación de código con plantillas T4.
Puede generar tipos comunes de TypeScript y declaraciones ambientales.
Admite implementaciones de herencia e interfaz.
Admite genéricos, matrices y listas como campos de tipo.
También se traduce a tipos de TypeScript que no se mencionan explícitamente en la configuración (por ejemplo, importamos el tipo A, y en la salida de TS puede encontrar algunos otros tipos: tipos de campos, tipos base e interfaces).
También puede anular el nombre del tipo.
También se admiten enumeraciones.
Ejemplo de uso (puede encontrarlo en el repositorio del proyecto):
Y obtendrás una salida
Consulte la solución completa aquí: https://bitbucket.org/chandrush/cst4ts
fuente
También puede utilizar Bridge.net. A partir de la versión 1.7, admite la generación de definiciones de TypeScript para tipos de C #. Ver http://bridge.net/docs/generate-typescript-definitions/
fuente
También me gustó mucho la respuesta de @ citykid, así que la extendí para hacer un espacio de nombres completo a la vez. Simplemente coloque las clases POCO en el espacio de nombres y reconstruya las plantillas T4. Desearía saber cómo generar archivos separados para cada uno, pero eso no es el fin del mundo.
Debe hacer referencia a los archivos .DLL en la parte superior (donde están las clases que desea) y debe mencionar los espacios de nombres. Todas las líneas para editar están marcadas con ACME. Gran saludo a @citykid, ¡lo agradezco!
fuente
Mi solución fue escribir una pequeña utilidad de codegen que simplemente toma un ensamblaje de proyecto (y ensamblajes de referencia) y comienza a escanear tipos que están involucrados en la interacción entre mecanografiado y c #. Esta utilidad genera tanto javascript como d.ts ... La herramienta se llama en el evento posterior a la compilación ... ¡funciona como un encanto!
fuente
Si está interesado, puede utilizar TypedRpc . Su propósito no es solo crear las interfaces en TypeScript, sino crear toda la comunicación con el servicio en .Net utilizando el protocolo JsonRpc.
Ejemplo de una clase en el servidor:
Uso del código TypeScript generado:
Consulte https://github.com/Rodris/TypedRpc para ver otros ejemplos de cómo usarlo.
fuente
Los generadores de cliente ASP.NET Web API pueden ser más útiles y menos costosos que la cadena de herramientas swagger y otros durante SDLC.
Si bien los programadores generalmente usan WebApiClientGen para generar códigos API de cliente, este proyecto también proporciona POCO2TS.exe, un programa de línea de comandos que genera interfaces TypsScript a partir de clases POCO. Puede usar Poco2ts.exe o el componente poco2ts para integrar la generación de código con su canal de compilación.
fuente
Si desea convertirlo a través de node.js, puede usar este paquete (csharp-to-typescript). https://www.npmjs.com/package/csharp-to-typescript
código fuente: https://github.com/YuvrajSagarRana/csharp-to-typescript
fuente
Si está utilizando VSCode, podría echar un vistazo a esa extensión C # a TypeScript
Vea cómo puedo convertirlo de código C # con solo un clic. Por supuesto, no todas las clases se convertirán como la fábrica, pero es lo suficientemente bueno para el lado del cliente. Solo necesitamos la forma de los datos. A veces, si necesito usar el patrón de visitante, lo decoraré con los métodos adicionales que necesite. Solo tomó como 5 segundos hacerlo. Comparando con el minuto anterior, podría decir que es una gran victoria.
Ver más detalles en la publicación de mi blog
fuente