TypeScript
TypeScript
TypeScript es un lenguaje de programación de código abierto desarrollado y mantenido por Microsoft. Es un superconjunto de JavaScript, que esencialmente añade tipado estático y objetos basados en clases. Por tanto, TypeScript extiende la sintaxis de JavaScript, pudiendo utilizar cualquier código de JavaScript sin problemas.
Para su uso es necesario realizar un proceso de transpilación que compila el código TypeScript (ficheros con extensión ".ts
") a código JavaScript (ficheros con extensión ".js
"). El proceso de transpilación es similar a la compilación, pero a diferencia de esta, en lugar de coger código de alto nivel generar código de bajo nivel, genera código también de alto nivel, como es el JavaScript en este caso.
A continuación veremos algunas nociones básicas sobre la sintáxis de TypeScript.
Variables tipadas
TypeScript soporta 4 tipos básicos de variables: string, number, boolean y any (que define una variable que puede aceptar cualquier tipo). Para indicar el tipo de la variable simplemente tenemos que indicarlo a continuación del nombre separado por dos puntos (:
). La definición de tipo es opcional, aunque sí que es recomendable su uso.
También podemos definir un objeto y utilizarlo como tipo de dato, que se declararía y usaría de la siguiente forma:
TypeScript permite utilizar clases e interfaces como tipo de dato, lo que forzaría a que esa variable solamente pueda contener instancias de ese tipo de objetos. A continuación se incluye un ejemplo de uso para una clase:
Podemos definir constantes añadiendo "const
" antes de una variable. Es importante destacar que en TypeScript solo se pueden declarar constantes fuera de las clases.
Let vs. var
También veremos que se utiliza de forma frecuente "let
" y "var
" para declarar variables (aunque ambos en realidad pertenecen a la sintaxis de JavaScript). Ambos son muy similares: declaran una variable de forma local. La diferencia está en que "let
" restringe más el ámbito de la variable. Mientras que con "var
" la variable se asocia al ámbito de la función que la contiene (y por lo tanto sería visible incluso antes de su definición), con "let
" solo sería accesible en el ámbito en el que se declara. Por ejemplo, si declaramos una variable con let
dentro de un bucle, dicha variable solo se podrá utilizar en dicho bucle; pero si lo hacemos con var
no, la variable sería accesible antes y después del bucle.
Arrays
Con TypeScript también podemos definir arrays tipados:
Definición de clases
TypeScript permite declarar clases mediante la palabra reservada "class
". Además podemos definir el constructor que se llamará al instanciar la clase:
En el ejemplo anterior se puede ver también cómo instanciar a una clase y llamar a sus funciones. Además es importante destacar que para la definicón de funciones no tenemos que utilizar la palabra reservada "function
".
A continuación se incluye un ejemplo más completo sobre cómo utilizar una clase con parámetros, en la que el constructor recibe una variable, la almacena y después se utiliza desde una función. En este ejemplo se muestra también cómo definir el tipo de parámetro que recibe una función (en este caso el constructor) y cómo utilizar "this
" para acceder a las variables miembro de la clase:
Con TypeScript podemos definir también el ámbito de las variables y de las funciones, por ejemplo:
Interfaces
También podemos definir una interfaz para forzar a las clases a definir una cierta funcionalidad (tanto variables como funciones):
Como ya indicamos antes, las interfaces las podemos utilizar también para definir un tipo de dato:
Exportación e importación
Por defecto el ámbito de cualquier clase definida dentro de un fichero es solamente el propio fichero. Para que una clase se pueda utilizar desde otro fichero tenemos que declararla como "export
":
De esta forma estamos exportando o haciendo pública la clase, para que desde otros ficheros se pueda importar:
Herencia
TypeScript nos permite también utilizar herencia. Para esto simplemente tenemos que añadir la palabra reservada "extends
" y el nombre de la clase de la cual queremos heredar a la definición de la clase:
A continuación se incluye un ejemplo un poco más completo en el que se muestra cómo utilizar la herencia en el caso de que el constructor de la clase padre reciba parámetros:
Last updated
Was this helpful?