stringtranslate.com

Mecanografiado

TypeScript es un lenguaje de programación de alto nivel, gratuito y de código abierto desarrollado por Microsoft que agrega tipado estático con anotaciones de tipo opcionales a JavaScript . Está diseñado para el desarrollo de aplicaciones grandes y se transpila a JavaScript. [6] .

TypeScript se puede utilizar para desarrollar aplicaciones JavaScript tanto para ejecución del lado del cliente como del lado del servidor (como con Node.js , Deno o Bun ). Hay múltiples opciones disponibles para la transpilación. Se puede utilizar el compilador TypeScript predeterminado [7] o se puede invocar el compilador Babel para convertir TypeScript a JavaScript.

TypeScript admite archivos de definición que pueden contener información de tipo de bibliotecas JavaScript existentes , de forma similar a como los archivos de encabezado de C++ pueden describir la estructura de los archivos de objetos existentes . Esto permite que otros programas utilicen los valores definidos en los archivos como si fueran entidades TypeScript tipadas estáticamente. Existen archivos de encabezado de terceros para bibliotecas populares como jQuery , MongoDB y D3.js. Los encabezados TypeScript para los módulos de la biblioteca Node.js también están disponibles, lo que permite el desarrollo de programas Node.js dentro de TypeScript. [8]

El compilador TypeScript está escrito en TypeScript y compilado en JavaScript. Tiene licencia Apache License 2.0 . Anders Hejlsberg , arquitecto principal de C# y creador de Delphi y Turbo Pascal , ha trabajado en el desarrollo de TypeScript. [9] [10] [11] [12]

Historia

TypeScript fue lanzado al público en octubre de 2012, con la versión 0.8, después de dos años de desarrollo interno en Microsoft. [13] [14] Poco después del lanzamiento público inicial, Miguel de Icaza elogió el lenguaje en sí, pero criticó la falta de soporte de IDE maduros aparte de Microsoft Visual Studio , que no estaba disponible en Linux y macOS en ese momento. [15] [16] A partir de abril de 2021 hay soporte en otros IDE y editores de texto, incluidos Emacs , Vim , WebStorm , Atom [17] y el propio Visual Studio Code de Microsoft . [18] TypeScript 0.9, lanzado en 2013, agregó soporte para genéricos . [19]

TypeScript 1.0 se lanzó en la conferencia para desarrolladores Build de Microsoft en 2014. [20] Visual Studio 2013 Update 2 proporcionó soporte integrado para TypeScript. [21] Se realizaron más mejoras en julio de 2014, cuando el equipo de desarrollo anunció un nuevo compilador de TypeScript, que se afirma que tiene un aumento de rendimiento cinco veces mayor. Al mismo tiempo, el código fuente, que inicialmente estaba alojado en CodePlex , se trasladó a GitHub . [22]

El 22 de septiembre de 2016, se lanzó TypeScript 2.0, que introdujo varias características, incluida la capacidad de los programadores de aplicar opcionalmente la seguridad nula , [23] para mitigar lo que a veces se conoce como el error de los mil millones de dólares .

TypeScript 3.0 se lanzó el 30 de julio de 2018, [24] incorporando muchas novedades al lenguaje, como tuplas en parámetros de descanso y expresiones extendidas, parámetros de descanso con tipos de tuplas, parámetros de descanso genéricos, etc. [25]

TypeScript 4.0 se lanzó el 20 de agosto de 2020. [26] Si bien la versión 4.0 no introdujo ningún cambio importante, agregó características del lenguaje como fábricas JSX personalizadas y tipos de tuplas variádicas. [26]

TypeScript 5.0 se lanzó el 16 de marzo de 2023 e incluyó soporte para decoradores. [27]

Diseño

TypeScript se originó a partir de las deficiencias de JavaScript para el desarrollo de aplicaciones a gran escala tanto en Microsoft como entre sus clientes externos. [28] Los desafíos para lidiar con código JavaScript complejo llevaron a la demanda de herramientas personalizadas para facilitar el desarrollo de componentes en el lenguaje. [29]

Los desarrolladores buscaron una solución que no rompiera la compatibilidad con el estándar ECMAScript y su ecosistema, por lo que se desarrolló un compilador para transformar un superconjunto de JavaScript con anotaciones de tipos y clases (archivos TypeScript) nuevamente en código ECMAScript 5 básico. Las clases TypeScript se basaron en la especificación de clases ECMAScript 6 propuesta en ese momento para hacer que la escritura de herencia prototípica fuera menos verbosa y propensa a errores, y las anotaciones de tipos habilitaron IntelliSense y mejoraron las herramientas.

Características

TypeScript agrega las siguientes extensiones de sintaxis a JavaScript:

En términos sintácticos, TypeScript es muy similar a JScript .NET , otra implementación de Microsoft del estándar de lenguaje ECMA-262 que agregó compatibilidad con tipado estático y características clásicas de lenguaje orientado a objetos, como clases, herencia, interfaces y espacios de nombres. Otras inspiraciones incluyen Java y C# .

Anotaciones de tipo

TypeScript proporciona tipado estático a través de anotaciones de tipo para permitir la verificación de tipo en tiempo de compilación .

función add ( izquierda : número , derecha : número ) : número { return izquierda + derecha ; }          

Los tipos primitivos se anotan utilizando tipos en minúsculas, como number, boolean, biginty string. Estos tipos son distintos de sus contrapartes en cajaNumber ( , Boolean, etc.), que no pueden tener operaciones realizadas directamente desde los valores (a Numbery numberno se pueden sumar). Además, existen tipos undefinedy nullpara sus respectivos valores.

Todos los demás tipos no primitivos se anotan utilizando su nombre de clase, como Error. Las matrices se pueden escribir de dos formas diferentes que son sintácticamente iguales: la sintaxis basada en genéricos Array<T>y una abreviatura con T[].

Los tipos de datos integrados adicionales son tuplas, uniones nevery any:

Las anotaciones de tipo se pueden exportar a un archivo de declaraciones independiente para que la información de tipo esté disponible para scripts TypeScript que utilicen tipos ya compilados en JavaScript. Las anotaciones se pueden declarar para una biblioteca JavaScript existente, como se ha hecho para Node.js y jQuery .

El compilador TypeScript utiliza la inferencia de tipos cuando no se proporcionan los tipos. Por ejemplo, addse inferiría que el método del código anterior devuelve a numberincluso si no se hubiera proporcionado ninguna anotación de tipo de retorno. Esto se basa en que los tipos estáticos de lefty rightson numbers, y en el conocimiento del compilador de que el resultado de sumar dos numbers es siempre a number.

Si no se puede inferir ningún tipo debido a la falta de declaraciones (como en un módulo de JavaScript sin tipos), se toma como valor predeterminado el anytipo dinámico. Se pueden proporcionar tipos de módulos adicionales mediante un archivo de declaración .d.ts con la declare module "moduleName"sintaxis.

Archivos de declaración

Cuando se compila un script TypeScript, existe una opción para generar un archivo de declaración (con la extensión .d.ts) que funciona como una interfaz para los componentes en el JavaScript compilado. En el proceso, el compilador elimina todos los cuerpos de funciones y métodos y conserva solo las firmas de los tipos que se exportan. El archivo de declaración resultante se puede utilizar para describir los tipos TypeScript virtuales exportados de una biblioteca o módulo JavaScript cuando un desarrollador externo lo consume desde TypeScript.

El concepto de archivos de declaración es análogo al concepto de archivos de encabezado que se encuentra en C/C++ .

declarar espacio de nombres Aritmética { sumar ( izquierda : número , derecha : número ) : número ; restar ( izquierda : número , derecha : número ) : número ; multiplicar ( izquierda : número , derecha : número ) : número ; dividir ( izquierda : número , derecha : número ) : número ; }                       

Los archivos de declaración de tipos se pueden escribir a mano para las bibliotecas de JavaScript existentes, como se ha hecho para jQuery y Node.js.

Grandes colecciones de archivos de declaración para bibliotecas de JavaScript populares están alojadas en GitHub en DefinitelyTyped.

Genéricos

TypeScript admite la programación genérica utilizando una sintaxis similar a Java . [33] El siguiente es un ejemplo de la función de identidad . [34]

función id < T > ( x : T ) : T { devolver x ; }      

Clases

TypeScript utiliza el mismo estilo de anotación para los métodos y campos de clase que para las funciones y variables respectivamente. En comparación con las clases de JavaScript estándar, una clase TypeScript también puede implementar una interfaz a través de la implementspalabra clave, utilizar parámetros genéricos de manera similar a Java y especificar campos públicos y privados.

clase Persona { nombre público : cadena ; edad privada : número ; salario privado : número ;            constructor ( nombre : cadena , edad : número , salario : número ) { this . nombre = nombre ; this . edad = edad ; this . salario = salario ; }                 toString ( ) : cadena { return ` $ { this.name } ( $ { this.age } ) ( $ { this.salario } ) ` ; } }     

Tipos de uniones

Los tipos de unión son compatibles con TypeScript. [35] Los valores están "etiquetados" implícitamente con un tipo por el lenguaje, y pueden recuperarse mediante una typeofllamada a valores primitivos y una instanceofcomparación para tipos de datos complejos. Los tipos con usos superpuestos (por ejemplo, existe un método de corte tanto en cadenas como en matrices, el operador más funciona tanto en cadenas como en números) no necesitan una restricción adicional para usar estas características.

función sucesora ( n : número | bigint ) : número | bigint { // los tipos que admiten las mismas operaciones no necesitan restricción return ++ n ; }           función depende de parámetro ( v : cadena | matriz < cadena > | número ) { // los tipos distintos necesitan restringirse if ( v instanceof Array ) { // hacer algo } else if ( typeof ( v ) === "cadena" ) { // hacer algo más } else { // tiene que ser un número } }                           

Tipos enumerados

TypeScript agrega un tipo de datos 'enum' a JavaScript.

enum Cardsuit { Tréboles , Diamantes , Corazones , Picas }; var c : Cardsuit = Cardsuit . Diamantes ;         

De manera predeterminada, las enumeraciones numeran a los miembros a partir de 0; esto se puede anular configurando el valor del primero:

enum Cardsuit { Tréboles = 1 , Diamantes , Corazones , Picas }; var c : Cardsuit = Cardsuit . Diamantes ;           

Se pueden configurar todos los valores:

enum Cardsuit { Tréboles = 1 , Diamantes = 2 , Corazones = 4 , Picas = 8 } ; var c : Cardsuit = Cardsuit.Diamantes ;                 

TypeScript permite asignar el valor numérico a su nombre. Por ejemplo, esto busca el nombre del valor 2:

enum Cardsuit { Tréboles = 1 , Diamantes , Corazones , Picas }; var suitName : string = Cardsuit [ 2 ];           alerta ( suitName );

Módulos y espacios de nombres

TypeScript distingue entre módulos y espacios de nombres. Ambas características de TypeScript admiten la encapsulación de clases, interfaces, funciones y variables en contenedores. Los espacios de nombres (anteriormente módulos internos) utilizan expresiones de funciones de JavaScript invocadas inmediatamente para encapsular el código, mientras que los módulos (anteriormente módulos externos) utilizan patrones de biblioteca de JavaScript existentes ( CommonJS o módulos ES). [36]

Compatibilidad con JavaScript

Como TypeScript es simplemente un superconjunto de JavaScript, el código JavaScript existente se puede adaptar rápidamente a TypeScript y el programa TypeScript puede consumir JavaScript sin problemas. El compilador puede utilizar todas las versiones de ECMAScript, desde la versión 5 hasta las posteriores, y transpilar características modernas, como clases y funciones de flecha, a sus contrapartes más antiguas.

Con TypeScript, es posible utilizar código JavaScript existente, incorporar bibliotecas JavaScript populares y llamar a código generado por TypeScript desde otro JavaScript. [37] Las declaraciones de tipo para estas bibliotecas generalmente se proporcionan con el código fuente, pero se pueden declarar o instalar por separado si es necesario.

Herramientas de desarrollo

Compilador

El compilador TypeScript, llamado tsc, está escrito en TypeScript . Como resultado, se puede compilar en JavaScript normal y luego se puede ejecutar en cualquier motor de JavaScript (por ejemplo, un navegador). El paquete del compilador viene con un host de script que puede ejecutar el compilador. También está disponible como un paquete Node.js que utiliza Node.js como host.

El compilador puede "apuntar" a una edición particular de ECMAScript (como ES5 para compatibilidad con navegadores heredados), pero de manera predeterminada compila para los estándares más recientes.

Compatibilidad con IDE y editor

Integración con herramientas de automatización de compilación

Mediante el uso de complementos , TypeScript se puede integrar con herramientas de automatización de compilación , incluidas Grunt (grunt-ts [43] ), Apache Maven (complemento TypeScript Maven [44] ), Gulp (gulp-typescript [45] ) y Gradle (complemento TypeScript Gradle [46] ).

Herramientas para quitar pelusa

TSLint [47] escanea el código TypeScript para comprobar su conformidad con un conjunto de estándares y pautas. ESLint , un linter de JavaScript estándar, también proporcionó cierto soporte para TypeScript a través de complementos de la comunidad. Sin embargo, la incapacidad de ESLint para aprovechar los servicios de lenguaje de TypeScript impidió ciertas formas de análisis semántico y de todo el programa. [48] A principios de 2019, el equipo de TSLint anunció la descontinuación del linter en favor de typescript-eslint, un esfuerzo conjunto de los equipos de TSLint, ESLint y TypeScript para consolidar el análisis semántico bajo el paraguas de ESLint para mejorar el rendimiento, la unidad de la comunidad y la accesibilidad para los desarrolladores. [49]

Proveedor de CodeDOM

CodeDOM [50] proporciona tipos que representan tipos comunes de elementos de código fuente, que se transformarán en tipos de datos, clases y declaraciones, etc. de un lenguaje de programación a través de un CodeDOMProvider. [51] Los programadores utilizan CodeDOM y un proveedor CodeDOM para construir un generador de código que genera códigos para un dominio de aplicación. El proveedor CodeDOM de TypeScript [52] genera códigos TypeScript de acuerdo con un CodeDOM.

Historial de versiones

Véase también

Referencias

Citas

  1. ^ "TypeScript". CodePlex . Archivado desde el original el 3 de abril de 2015 . Consultado el 26 de abril de 2015 .
  2. ^ "Versión 5.6.3". 9 de octubre de 2024. Consultado el 27 de octubre de 2024 .
  3. ^ "Compatibilidad de tipos". TypeScript . Archivado desde el original el 12 de marzo de 2018 . Consultado el 21 de marzo de 2018 .
  4. ^ "La historia temprana de F#" (PDF) . Archivado (PDF) del original el 9 de agosto de 2024 . Consultado el 5 de febrero de 2024 . TypeScript recibió una influencia directa de F#: uno de los creadores de TypeScript fue Luke Hoban, quien comenzó TypeScript (entonces llamado Strada) inmediatamente después de trabajar en F# 2.0. Recientemente, notó la influencia de F# en las primeras partes del diseño de TypeScript [Hoban 2017].
  5. ^ Nelson, Gary (28 de abril de 2020). «Cómo ActionScript prefiguró a TypeScript». Medium . Archivado desde el original el 9 de agosto de 2024. Consultado el 9 de julio de 2022 .
  6. ^ Bright, Peter (3 de octubre de 2012). «Microsoft TypeScript: ¿el JavaScript que necesitamos o una solución que busca un problema?». Ars Technica . Condé Nast . Archivado desde el original el 9 de octubre de 2018. Consultado el 26 de abril de 2015 .
  7. ^ "Programación de TypeScript con Visual Studio Code". code.visualstudio.com . Archivado desde el original el 22 de septiembre de 2022 . Consultado el 12 de febrero de 2019 .
  8. ^ "borisyankov/DefinitelyTyped". GitHub . Archivado desde el original el 1 de noviembre de 2015 . Consultado el 26 de abril de 2015 .
  9. ^ Foley, Mary Jo (1 de octubre de 2012). «Microsoft presenta TypeScript, un superconjunto de JavaScript». ZDNet . CBS Interactive . Archivado desde el original el 13 de noviembre de 2014 . Consultado el 26 de abril de 2015 .
  10. ^ Somasegar, S. (1 de octubre de 2012). «El blog de Somasegar». Microsoft. Archivado desde el original el 22 de abril de 2015. Consultado el 26 de abril de 2015 .
  11. ^ Baxter-Reynolds, Matt (1 de octubre de 2012). «Microsoft TypeScript: ¿Puede el padre de C# salvarnos de la tiranía de JavaScript?». ZDNet . Archivado desde el original el 3 de agosto de 2014. Consultado el 26 de abril de 2015 .
  12. ^ Jackson, Joab (1 de octubre de 2012). «Microsoft aumenta Javascript para el desarrollo a gran escala». CIO . IDG Enterprise . Archivado desde el original el 17 de diciembre de 2013 . Consultado el 26 de abril de 2015 .
  13. ^ "Microsoft amplía JavaScript para el desarrollo a gran escala". InfoWorld . IDG . 1 de octubre de 2012. Archivado desde el original el 31 de mayo de 2013 . Consultado el 26 de abril de 2015 .
  14. ^ Turner, Jonathan (2 de abril de 2014). «Anuncio de TypeScript 1.0». Blog del equipo del lenguaje TypeScript . Microsoft. Archivado desde el original el 5 de septiembre de 2015. Consultado el 20 de octubre de 2021 .
  15. ^ Miguel de Icaza (1 de octubre de 2012). "TypeScript: primeras impresiones". Archivado desde el original el 24 de febrero de 2019. Consultado el 12 de octubre de 2012. Pero TypeScript solo ofrece la mitad del valor que supone utilizar un lenguaje fuertemente tipado para los desarrolladores de Unix: tipado fuerte . Intellisense, la finalización de código y la refactorización son herramientas que solo están disponibles para los usuarios de Visual Studio Professional en Windows. No hay compatibilidad con Eclipse, MonoDevelop o Emacs para ninguna de las características del lenguaje.
  16. ^ "Microsoft TypeScript: ¿Puede el padre de C# salvarnos de la tiranía de JavaScript?". ZDNet . 1 de octubre de 2012. Archivado desde el original el 3 de agosto de 2014 . Consultado el 12 de octubre de 2012 . Y creo que este es un gran paso en falso. Si estás creando aplicaciones web que se ejecutan en cualquier sistema que no sea Windows, es probable que estés usando una Mac y lo más probable es que no uses Visual Studio. Necesitas el complemento de Visual Studio para obtener IntelliSense. Todo lo que obtienes sin Visual Studio es el tipado fuerte. No obtienes los beneficios de productividad que obtienes de IntelliSense. .
  17. ^ "TypeStrong: El único paquete TypeScript que necesitarás". GitHub . Archivado desde el original el 19 de diciembre de 2018 . Consultado el 21 de julio de 2016 .
  18. ^ Hillar, Gastón (14 de mayo de 2013). «Trabajando con TypeScript en Visual Studio 2012». Diario del Dr. Dobb . Archivado desde el original el 29 de septiembre de 2018. Consultado el 26 de abril de 2015 .
  19. ^ "TypeScript 0.9 llega con nuevo compilador y soporte para genéricos". The Register . 18 de junio de 2013. Archivado desde el original el 11 de marzo de 2018 . Consultado el 26 de abril de 2015 .
  20. ^ Hejlsberg, Anders (2 de abril de 2014). «TypeScript». Canal 9 . Microsoft. Archivado desde el original el 25 de mayo de 2015 . Consultado el 26 de abril de 2015 .
  21. ^ Jackson, Joab (25 de febrero de 2014). «Microsoft TypeScript se gradúa en Visual Studio». PC World . IDG . Archivado desde el original el 11 de marzo de 2016 . Consultado el 26 de abril de 2015 .
  22. ^ Turner, Jonathan (21 de julio de 2014). «Nuevo compilador y migración a GitHub». Blog del equipo del lenguaje TypeScript . Microsoft. Archivado desde el original el 22 de julio de 2014. Consultado el 26 de abril de 2015 .
  23. ^ Bright, Peter (22 de septiembre de 2016). «TypeScript, el JavaScript de Microsoft para grandes aplicaciones, llega a la versión 2.0». Ars Technica . Condé Nast . Archivado desde el original el 21 de diciembre de 2018 . Consultado el 22 de septiembre de 2016 .
  24. ^ "Anuncio de TypeScript 3.0". 30 de julio de 2018. Archivado desde el original el 30 de mayo de 2020. Consultado el 16 de marzo de 2020 .
  25. ^ "TypeScript 3.0". 30 de julio de 2018. Archivado desde el original el 6 de junio de 2020. Consultado el 16 de marzo de 2020 .
  26. ^ ab "Anuncio de TypeScript 4.0". TypeScript . 20 de agosto de 2020. Archivado desde el original el 9 de agosto de 2024 . Consultado el 30 de octubre de 2020 .
  27. ^ "Documentación – TypeScript 5.0". www.typescriptlang.org . Archivado desde el original el 9 de agosto de 2024 . Consultado el 18 de mayo de 2023 .
  28. ^ Anders Hejlsberg (5 de octubre de 2012). «Qué es TypeScript y por qué con Anders Hejlsberg». www.hanselminutes.com. Archivado desde el original el 27 de diciembre de 2018. Consultado el 15 de enero de 2014 .
  29. ^ S. Somasegar (1 de octubre de 2012). «TypeScript: desarrollo de JavaScript a escala de aplicación». msdn.com. Archivado desde el original el 22 de abril de 2015. Consultado el 27 de noviembre de 2013 .
  30. ^ "Documentación – TypeScript 5.2". www.typescriptlang.org . Archivado desde el original el 9 de agosto de 2024 . Consultado el 9 de noviembre de 2023 .
  31. ^ "Especificación del lenguaje TypeScript p.24" (PDF) . Archivado desde el original (PDF) el 17 de noviembre de 2013.
  32. ^ "TypeScript: Documentation – Everyday Types" (Documentación de TypeScript: tipos cotidianos). www.typescriptlang.org/ . Archivado desde el original el 9 de agosto de 2024. Consultado el 30 de marzo de 2021 .
  33. ^ Turner, Jonathan (18 de junio de 2013). «Anuncio de TypeScript 0.9». Blog del equipo del lenguaje TypeScript . Microsoft . Archivado desde el original el 26 de noviembre de 2013. Consultado el 18 de junio de 2013 .
  34. ^ "Generics in Typescript". Microsoft . Archivado desde el original el 5 de abril de 2020 . Consultado el 8 de abril de 2020 .
  35. ^ "Manual - Uniones y tipos de intersección". www.typescriptlang.org . Consultado el 30 de noviembre de 2020 .
  36. ^ Sönke Sothmann (31 de enero de 2014). «Introducción al sistema de módulos de TypeScript». blog.oio.de. Archivado desde el original el 1 de febrero de 2014. Consultado el 21 de febrero de 2014 .
  37. ^ "Bienvenido a TypeScript". typescriptlang.org . Microsoft . Archivado desde el original el 10 de marzo de 2018 . Consultado el 26 de abril de 2015 .
  38. ^ Olivier Bloch (1 de octubre de 2012). «Sublime Text, Vi, Emacs: TypeScript habilitado». Microsoft . Archivado desde el original el 29 de octubre de 2012. Consultado el 28 de octubre de 2012 .
  39. ^ "Compatibilidad con TypeScript en WebStorm 6". JetBrains. 27 de febrero de 2013. Archivado desde el original el 2 de junio de 2016 . Consultado el 20 de abril de 2013 .
  40. ^ "Compatibilidad con TypeScript en ReSharper 8.1". JetBrains. 28 de octubre de 2013. Archivado desde el original el 2 de febrero de 2014. Consultado el 21 de enero de 2014 .
  41. ^ "ReSharper: la extensión de Visual Studio para desarrolladores .NET de JetBrains". JetBrains .
  42. ^ "atom-typescript". Atom . Archivado desde el original el 4 de octubre de 2016 . Consultado el 9 de enero de 2020 .
  43. ^ "TypeStrong/grunt-ts". GitHub . Archivado desde el original el 16 de abril de 2020 . Consultado el 26 de abril de 2015 .
  44. ^ "ppedregal/typescript-maven-plugin". GitHub . Archivado desde el original el 11 de junio de 2018 . Consultado el 26 de abril de 2015 .
  45. ^ "ivogabe/gulp-typescript". GitHub . Archivado desde el original el 11 de junio de 2018 . Consultado el 14 de julio de 2017 .
  46. ^ "sothmann/typescript-gradle-plugin". GitHub . Archivado desde el original el 11 de junio de 2018 . Consultado el 26 de abril de 2015 .
  47. ^ "TSLint". palantir.github.io . Archivado desde el original el 21 de diciembre de 2022 . Consultado el 11 de febrero de 2019 .
  48. ^ Palantir (19 de febrero de 2019). «TSLint en 2019». Medium . Consultado el 24 de abril de 2019 .
  49. ^ "TSLint queda obsoleto para centrarse en el soporte de Typescript-eslint". InfoQ . Archivado desde el original el 9 de agosto de 2024 . Consultado el 24 de abril de 2019 .
  50. ^ "CodeDOM". learn.microsoft.com . 30 de marzo de 2024.
  51. ^ "CodeDOMProvider". learn.microsoft.com . Archivado desde el original el 9 de agosto de 2024 . Consultado el 8 de diciembre de 2023 .
  52. ^ "Proveedor CodeDOM de TypeScript". github.com . Archivado desde el original el 9 de agosto de 2024 . Consultado el 26 de febrero de 2024 .

Fuentes

Enlaces externos