Modules (m贸dulos) Modules (m贸dulos)

馃 Modules (m贸dulos)

JavaScript tiene una larga historia acerca de la modularizaci贸n del c贸digo. A trav茅s del tiempo la comunidad y la especificaci贸n de JavaScript ha convergido en un formato llamado ES Modules (M贸dulos ES) que muy probablemente conozcas como import/export.

Los ES Modules fueron agregados a partir del 2015, y para el 2020 han adquirido bastante soporte dentro de los navegadores web e interpretes de JavaScript runtime.

Para prop贸sitos de aprendizaje cubriremos los ES Modules import/export as铆 como su precursor Common JS modules.exports.

馃嵖 驴C贸mo se definen los m贸dulos en TypeScript?

En TypeScript al igual que en ES 2015, cualquier archivo que contenga en su parte superior import o export es considerado un m贸dulo.

Por el contrario cualquier archivo que no contenga un import o export es tratado como un script cuyo contenidos son tratados en un scope global (y por ende para los m贸dulos son considerados as铆 tambi茅n).

Los m贸dulos son ejecutados dentro de su propio scope, no en el scope global. Esto quiere decir que las variables, funciones, clases, etc. declaradas dentro de un m贸dulo no son visibles fuera del m贸dulo a menos que estas sean expl铆citamente exportadas utilizando una de las formas de exportarlas. De igual manera para utilizar una variable, clase, interface, etc., esta tiene que ser importada primero.

馃嵖 No modules

Antes de que empecemos, es importante entender que es lo que TypeScript considera un m贸dulo. La especificaci贸n de JavaScript sostiene que cualquier archivo JavaScript que no tenga una instrucci贸n export o un await en el nivel superior, entonces debe ser considerado un script y no un m贸dulo.

Dentro de un script, las variables son declaradas para residir dentro de un scope global, y se asume que se utilizar谩 la directiva --outFile del compilador para unir el c贸digo de todos los archivos en uno solo, o m煤ltiples tags <script> dentro del HTML para cargar estos archivos en el orden correcto.

Si tienes un archivo que no tiene ninguna instrucci贸n import o export, pero deseas que sea tratado como un m贸dulo, utiliza la siguiente instrucci贸n al final.

export {};
Classes, Relationships (relaciones entre clases) Modules, TypeScript Modules (m贸dulos en TypeScript)
comments powered by Disqus