¿Cómo permitir clases definidas en un módulo que pueden ser accesibles fuera del módulo?

Los scripts de TypeScript escritos de forma predeterminada están en el ámbito global, lo que significa que todas las funciones, métodos, variables, etc. en un archivo son accesibles en todos los demás archivos de TypeScript. Esto puede generar conflictos en las variables, funciones, ya que los programadores pueden editar el nombre o el valor de la función/variable sin darse cuenta. Por lo tanto, se introdujo el concepto de módulos para evitar este ámbito global predeterminado y, en su lugar, envolver todas las variables y funciones asociadas en el ámbito local. Esto es útil, especialmente cuando se mantiene una gran base de código.

Dado que los módulos crean ámbitos locales en el archivo TypeScript, no se podrá acceder a todas las variables, funciones o clases definidas en un módulo fuera de ese módulo en particular. En este artículo, veremos cómo permitir que las clases definidas en un módulo sean accesibles fuera del módulo. La sintaxis de una clase definida en un módulo en TypeScript es la siguiente:

Sintaxis:

module nameOfModule {
    class nameOfClass {
        field;
        method;
    }
}

Ejemplo 1: En este ejemplo, se crea una clase de Estudiantes dentro de un módulo llamado Universidad que tiene un constructor parametrizado que se usa para la inicialización o construcción de objetos con los parámetros de una string que representa el nombre del estudiante y un número que representa la edad del alumno.

script.ts

module University {
    class Student {
        constructor(public name: string, 
            public age: number) { }
    }
    var firstStudent = new Student("GeeksforGeeks", 15);
}
var secondStudent = new University.Student("Rajat", 20);
console.log(secondStudent);

Salida: Hay un error de compilación ya que no se puede acceder a la clase Estudiante dentro del módulo Universidad fuera del módulo como se discutió anteriormente.

Para combatir esto, simplemente usamos la palabra clave export que hace que todas las clases o funciones, variables, métodos dentro de un módulo sean accesibles fuera de ese módulo. En otras palabras, podemos decir que la palabra clave export convierte todas las clases o funciones de ámbito local, variables en el ámbito global.

Ejemplo 2: este ejemplo es muy similar al ejemplo anterior, pero la única distinción es que la palabra clave de exportación se usa antes de la clase Estudiante , lo que significa que la clase y sus funciones asociadas, los métodos se pueden utilizar fuera del módulo Universidad .

index.ts

module University {
    export class Student {
        constructor(public name: string, 
            public age: number) { }
    }
    var firstStudent = new Student("GeeksforGeeks", 15);
}
var secondStudent = new University.Student("Rajat", 20);
console.log(secondStudent);

index.js

var University;
(function (University) {
    var Student = /** @class */ (function () {
        function Student(name, age) {
            this.name = name;
            this.age = age;
        }
        return Student;
    }());
    University.Student = Student;
    var firstStudent = new Student("GeeksforGeeks", 15);
})(University || (University = {}));
var secondStudent = new University.Student("Rajat", 20);
console.log(secondStudent);

Producción:

Publicación traducida automáticamente

Artículo escrito por rajatsandhu2001 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *