stringtranslate.com

Mecanografiado

TypeScript es un lenguaje de programación de alto nivel gratuito y de código abierto desarrollado por Microsoft que agrega escritura estática con anotaciones de tipo opcionales a JavaScript . Está diseñado para el desarrollo de grandes aplicaciones y se transpila a JavaScript. [6] Debido a que TypeScript es un superconjunto de JavaScript, todos los programas JavaScript son TypeScript sintácticamente válidos, pero es posible que no realicen la verificación de tipo por razones de seguridad .

TypeScript se puede utilizar para desarrollar aplicaciones JavaScript para ejecución tanto 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 , al igual que los archivos de encabezado de C++ pueden describir la estructura de archivos objeto existentes . Esto permite que otros programas utilicen los valores definidos en los archivos como si fueran entidades TypeScript escritas estáticamente. Hay archivos de encabezado de terceros para bibliotecas populares como jQuery , MongoDB y D3.js. Los encabezados de 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 de TypeScript está escrito en TypeScript y compilado en JavaScript. Tiene la licencia Apache 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 IDE maduro aparte de Microsoft Visual Studio , que no estaba disponible en Linux y OS X 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 de desarrolladores Build de Microsoft en 2014. [20] Visual Studio 2013 Update 2 proporciona 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 afirmó tener un aumento de rendimiento cinco veces mayor. Simultáneamente, 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 presenta varias características, incluida la capacidad para que los programadores apliquen opcionalmente la seguridad nula , [23] para mitigar lo que a veces se denomina el error de los mil millones de dólares .

TypeScript 3.0 se lanzó el 30 de julio de 2018, [24] y trajo muchas adiciones de lenguaje, como tuplas en parámetros de descanso y expresiones de extensión, parámetros de descanso con tipos de tupla, parámetros de descanso genéricos, etc. [25]

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

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

Diseño

TypeScript surgió 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 al 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 de TypeScript buscaron una solución que no rompiera la compatibilidad con el estándar y su soporte multiplataforma. Sabiendo que la propuesta estándar actual de ECMAScript prometía soporte futuro para la programación basada en clases , TypeScript se basó en esa propuesta. Eso llevó a un compilador de JavaScript con un conjunto de extensiones de lenguaje sintáctico, un superconjunto basado en la propuesta, que transforma las extensiones en JavaScript normal. En este sentido, la característica de clase de TypeScript fue una vista previa de lo que se puede esperar de ECMAScript 2015. Un aspecto único que no está en la propuesta, pero se agregó a TypeScript, es la escritura estática opcional (también conocida como escritura gradual ) que permite el análisis del lenguaje estático para Facilitar herramientas y soporte IDE.

Soporte ECMAScript 2015

TypeScript agrega soporte para características como clases, módulos y una sintaxis de función de flecha como se define en el estándar ECMAScript 2015.

Características

TypeScript es una extensión de lenguaje que agrega funciones a ECMAScript 6. Las funciones adicionales incluyen:

Las siguientes características están respaldadas desde ECMAScript 2015:

Sintácticamente, TypeScript es muy similar a JScript .NET , otra implementación de Microsoft del estándar de lenguaje ECMA-262 que agregó soporte para escritura estática y características clásicas del lenguaje orientado a objetos, como clases, herencia, interfaces y espacios de nombres.

Compatibilidad con JavaScript

TypeScript es un superconjunto estricto de ECMAScript 2015, que a su vez es un superconjunto de ECMAScript 5, comúnmente conocido como JavaScript. [32] Como tal, un programa JavaScript también es un programa TypeScript válido y un programa TypeScript puede consumir JavaScript sin problemas. De forma predeterminada, el compilador apunta a ECMAScript 5, el estándar predominante actualmente, pero también puede generar construcciones utilizadas en ECMAScript 3 o 2015.

Con TypeScript, es posible utilizar código JavaScript existente, incorporar bibliotecas de JavaScript populares y llamar código generado por TypeScript desde otro JavaScript. [33] Las declaraciones de tipo para estas bibliotecas se proporcionan con el código fuente.

Escriba anotaciones

TypeScript proporciona escritura estática a través de anotaciones de tipo para permitir la verificación de tipos en tiempo de compilación . Esto es opcional y se puede ignorar para utilizar la escritura dinámica normal de JavaScript.

función agregar ( izquierda : número , derecha : número ) : número { retorno izquierda + derecha ; }         

Los tipos primitivos se anotan utilizando los tipos number, booleany string. Estos tipos son distintos de sus contrapartes de clase ( Number,, Booleanetc.), en las que no se pueden realizar operaciones a partir de valores directamente. Por ejemplo, a Numbery a numberno se pueden sumar. undefinedAdemás , hay nulltipos para sus respectivos valores.

Todos los demás tipos se anotan utilizando su nombre de clase en lugar de primitivos, como Error. Algunos tipos toman parámetros genéricos , como por ejemplo Promise: una promesa a una cadena se anotaría como Promise<string>. Las matrices se pueden escribir de dos maneras diferentes, ambas sintácticamente iguales: la sintaxis genérica Array<T>y una abreviatura con T[]. Los tipos genéricos también se pueden encadenar, por lo que Promiseuna Arraycadena podría escribirse como Promise<Array<string>>(o Promise<string[]>usar el estilo de matriz abreviado).

Los tipos de datos integrados adicionales son : Tuple, y . Una matriz con tipos de datos predefinidos en cada índice es un archivo . Una variable que puede contener más de un tipo de datos es un tipo. El tipo se utiliza cuando un tipo determinado debería ser imposible de crear. Las estructuras de tipo débil o dinámico pueden utilizar el tipo para evitar errores, aunque generalmente no se recomienda esta práctica. [34]UnionneveranyTupleUnionneverany

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

El compilador de TypeScript utiliza la inferencia de tipos para inferir tipos cuando no se proporcionan los tipos. Por ejemplo, addse inferiría que el método en el código anterior devuelve un numberincluso si no se hubiera proporcionado ninguna anotación de tipo de devolución. Esto se basa en los tipos estáticos de lefty rightBeing numbersy en el conocimiento del compilador de que el resultado de sumar dos numberses siempre un number. Sin embargo, declarar explícitamente el tipo de retorno permite al compilador verificar la corrección.

Si no se puede inferir ningún tipo debido a la falta de declaraciones, el valor predeterminado es el anytipo dinámico. Un valor del anytipo admite las mismas operaciones que un valor en JavaScript y se realiza una verificación de tipo estática mínima para las operaciones con anyvalores. [35]

Archivos de declaración

Cuando se compila un script TypeScript, hay una opción para generar un archivo de declaración (con la extensión .d.ts) que funciona como una interfaz para los componentes del JavaScript compilado. En el proceso, el compilador elimina todos los cuerpos de funciones y métodos y conserva sólo las firmas de los tipos que se exportan. El archivo de declaración resultante se puede utilizar para describir los tipos de TypeScript virtuales exportados de una biblioteca o módulo de 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 encuentran en C/C++ .

declarar aritmética de espacios de nombres { agregar ( 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 bibliotecas JavaScript existentes, como se ha hecho para jQuery y Node.js.

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

Clases

TypeScript admite clases ECMAScript 2015 que integran el soporte de anotaciones de tipo opcional.

clase Persona { nombre privado : cadena ; edad privada : número ; salario privado : número ;            constructor ( nombre : cadena , edad : número , salario : número ) { this . nombre = nombre ; este . edad = edad ; este . salario = salario ; }                 toString () : cadena { return ` ${ esto . nombre } ( $ { esta.edad } ) ( $ { este.salario } ) ` ; // A partir de la versión 1.4 } }      

Genéricos

TypeScript admite programación genérica . [36] El siguiente es un ejemplo de la función de identidad . [37]

ID de función <T> ( x : T ) : T { return x ; _ }      

Tipos de unión

Los tipos de unión son compatibles con TypeScript. [38] Los valores están implícitamente "etiquetados" con un tipo por el lenguaje y pueden recuperarse mediante "typeof()".

sucesor de función ( n : número | bigint ) : número | bigint { retorno ++ n }          

Tipos enumerados

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

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

De forma predeterminada, enumera los miembros numéricos que comienzan en 0; esto se puede anular estableciendo 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 , Espadas = 8 }; var c : Cardsuit = Cardsuit . diamantes ;                 

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

enum Cardsuit { Tréboles = 1 , Diamantes , Corazones , Picas }; var nombre del traje : cadena = Traje de carta [ 2 ];           alerta ( nombre del traje );

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 código, mientras que los módulos (anteriormente módulos externos) aprovechan los patrones de la biblioteca de JavaScript para hacerlo ( AMD o CommonJS ). [39]

Herramientas de desarrollo

Compilador

El compilador de TypeScript, llamado tsc, está escrito en TypeScript . Como resultado, se puede compilar en JavaScript normal y luego 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 paquete Node.js que utiliza Node.js como host.

La versión actual del compilador admite ECMAScript 5 de forma predeterminada. Se permite una opción para apuntar a ECMAScript 2015 para hacer uso de características de lenguaje exclusivas de esa versión (por ejemplo, generadores). Las clases, a pesar de ser parte del estándar ECMAScript 2015, están disponibles en ambos modos.

Soporte IDE y editor

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

Mediante complementos , TypeScript se puede integrar con herramientas de automatización de compilación , incluidos Grunt (grunt-ts [45] ), Apache Maven (TypeScript Maven Plugin [46] ), Gulp (gulp-typescript [47] ) y Gradle (TypeScript Gradle) . Complemento [48] ).

Herramientas de pelusa

TSLint [49] escanea el código TypeScript para verificar que cumpla 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 comunitarios. Sin embargo, la incapacidad de ESLint para aprovechar los servicios de lenguaje de TypeScript impidió ciertas formas de linting semántico y análisis de todo el programa. [50] A principios de 2019, el equipo de TSLint anunció la obsolescencia de linter a favor de typescript-eslint, un esfuerzo conjunto de los equipos de TSLint, ESLint y TypeScript para consolidar linting bajo el paraguas de ESLint para mejorar el rendimiento, la unidad de la comunidad y la accesibilidad de los desarrolladores. [51]

Proveedor de códigoDOM

CodeDOM [52] 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 CodeDOMProvider. [53] 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. TypeScript CodeDOM Provider [54] genera códigos TypeScript según un CodeDOM.

Historial de lanzamientos

Ver también

Referencias

Citas

  1. ^ "Mecanografiado". CódigoPlex . Archivado desde el original el 3 de abril de 2015 . Consultado el 26 de abril de 2015 .
  2. ^ "Lanzamiento de TypeScript 5.3 microsoft/TypeScript". 20 de noviembre de 2023 . Consultado el 24 de noviembre de 2023 .
  3. ^ "Compatibilidad de tipos". Mecanografiado . Consultado el 21 de marzo de 2018 .
  4. ^ "La historia temprana de F#" (PDF) . TypeScript fue influenciado directamente por 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 presagió a TypeScript". Medio . 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 Técnica . Conde Nast . Consultado el 26 de abril de 2015 .
  7. ^ "Programación TypeScript con Visual Studio Code". código.visualstudio.com . Consultado el 12 de febrero de 2019 .
  8. ^ "borisyankov/DefinitelyTyped". GitHub . 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 interactivo . Consultado el 26 de abril de 2015 .
  10. ^ Somasegar, S. (1 de octubre de 2012). "Blog de Somasegar". Microsoft . 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 . 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 . Empresa IDG . Archivado desde el original el 17 de diciembre de 2013 . Consultado el 26 de abril de 2015 .
  13. ^ "Microsoft aumenta JavaScript para el desarrollo a gran escala". InfoMundo . IDG . 1 de octubre de 2012 . Consultado el 26 de abril de 2015 .
  14. ^ Turner, Jonathan (2 de abril de 2014). "Anuncio de TypeScript 1.0". Blog del equipo de lenguaje TypeScript . Microsoft . Consultado el 20 de octubre de 2021 .
  15. ^ Miguel de Icaza (1 de octubre de 2012). "TypeScript: primeras impresiones" . Consultado el 12 de octubre de 2012 . Pero TypeScript solo ofrece la mitad del valor que supone el uso de un lenguaje fuertemente tipado para los desarrolladores de Unix: tipado fuerte. Intellisense, finalización de código y refactorización son herramientas que sólo están disponibles para los usuarios de Visual Studio Professional en Windows. No hay soporte para 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 . Consultado el 12 de octubre de 2012 . Y creo que este es un paso en falso bastante grande. Si está creando aplicaciones web que se ejecutan en cualquier otro sistema que no sea Windows, probablemente esté usando una Mac y probablemente no esté usando Visual Studio. Necesita el complemento de Visual Studio para obtener IntelliSense. Todo lo que obtienes sin Visual Studio es escritura segura. No obtiene los beneficios de productividad que obtiene con IntelliSense. .
  17. ^ "TypeStrong: el único paquete TypeScript que necesitará". GitHub . Consultado el 21 de julio de 2016 .
  18. ^ Hillar, Gastón (14 de mayo de 2013). "Trabajar con TypeScript en Visual Studio 2012". Diario del Dr. Dobb . Consultado el 26 de abril de 2015 .
  19. ^ "TypeScript 0.9 llega con un nuevo compilador y soporte para genéricos". El registro . 18 de junio de 2013 . Consultado el 26 de abril de 2015 .
  20. ^ Hejlsberg, Anders (2 de abril de 2014). "Mecanografiado". Canal 9 . Microsoft . Consultado el 26 de abril de 2015 .
  21. ^ Jackson, Joab (25 de febrero de 2014). "Microsoft TypeScript se gradúa en Visual Studio". Mundo PC . IDG . Consultado el 26 de abril de 2015 .
  22. ^ Turner, Jonathan (21 de julio de 2014). "Nuevo compilador y traslado a GitHub". Blog del equipo de lenguaje TypeScript . Microsoft . Consultado el 26 de abril de 2015 .[ enlace muerto permanente ]
  23. ^ Bright, Peter (22 de septiembre de 2016). "TypeScript, el JavaScript de Microsoft para grandes aplicaciones, llega a la versión 2.0". Ars Técnica . Conde Nast . Consultado el 22 de septiembre de 2016 .
  24. ^ "Anuncio de TypeScript 3.0". 30 de julio de 2018 . Consultado el 16 de marzo de 2020 .
  25. ^ "Mecanografiado 3.0". 30 de julio de 2018 . Consultado el 16 de marzo de 2020 .
  26. ^ ab "Anuncio de TypeScript 4.0". Mecanografiado . 20 de agosto de 2020 . Consultado el 30 de octubre de 2020 .
  27. ^ "Documentación: TypeScript 5.0". www.typescriptlang.org . 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.hanselminutos.com . Consultado el 15 de enero de 2014 .
  29. ^ S. Somasegar (1 de octubre de 2012). "TypeScript: desarrollo de JavaScript a escala de aplicaciones". msdn.com . Consultado el 27 de noviembre de 2013 .
  30. ^ "Documentación: TypeScript 5.2". www.typescriptlang.org . Consultado el 9 de noviembre de 2023 .
  31. ^ Klint Finley (1 de octubre de 2012). "Microsoft presenta una vista previa del nuevo lenguaje de programación TypeScript similar a JavaScript". TechCrunch . Consultado el 27 de noviembre de 2013 .
  32. ^ "Angular 2". angular.io . Consultado el 4 de mayo de 2016 .
  33. ^ "Bienvenido a TypeScript". typescriptlang.org . Microsoft . Consultado el 26 de abril de 2015 .
  34. ^ "TypeScript: documentación: tipos cotidianos". www.typescriptlang.org/ . Consultado el 30 de marzo de 2021 .
  35. ^ "Especificación del lenguaje TypeScript p.24" (PDF) . Archivado desde el original (PDF) el 17 de noviembre de 2013.
  36. ^ Turner, Jonathan (18 de junio de 2013). "Anuncio de TypeScript 0.9". Blog del equipo de lenguaje TypeScript . Microsoft .
  37. ^ "Genéricos en letra mecanografiada". Microsoft .
  38. ^ "Manual: uniones y tipos de intersecciones". www.typescriptlang.org . Consultado el 30 de noviembre de 2020 .
  39. ^ Sönke Sothmann (31 de enero de 2014). "Una 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 .
  40. ^ Olivier Bloch (1 de octubre de 2012). "Sublime Text, Vi, Emacs: ¡TypeScript habilitado!". Microsoft . Consultado el 28 de octubre de 2012 .
  41. ^ "Compatibilidad con TypeScript en WebStorm 6". JetBrains.
  42. ^ "Compatibilidad con TypeScript en ReSharper 8.1". JetBrains. 28 de octubre de 2013.
  43. ^ "ReSharper: la extensión de Visual Studio para desarrolladores de .NET de JetBrains". JetBrains .
  44. ^ "mecanografiado atómico". Átomo . Consultado el 9 de enero de 2020 .
  45. ^ "Tipo fuerte/gruñidos". GitHub . Consultado el 26 de abril de 2015 .
  46. ^ "ppedregal/mecanografiado-maven-plugin". GitHub . Consultado el 26 de abril de 2015 .
  47. ^ "ivogabe/gulp-mecanografiado". GitHub . Consultado el 14 de julio de 2017 .
  48. ^ "sothmann/typescript-gradle-plugin". GitHub . Consultado el 26 de abril de 2015 .
  49. ^ "TSLint". palantir.github.io .
  50. ^ Palantir (19 de febrero de 2019). "TSLint en 2019". Medio . Consultado el 24 de abril de 2019 .
  51. ^ "TSLint en desuso para centrarse en el soporte en mecanografiado-eslint". InfoQ . Consultado el 24 de abril de 2019 .
  52. ^ "CódigoDOM". aprender.microsoft.com .
  53. ^ "CódigoDOMProvider". aprender.microsoft.com .
  54. ^ "Proveedor TypeScript CodeDOM". github.com .

Fuentes

enlaces externos