如何允许模块内的类能够在模块外访问

如何允许模块内的类能够在模块外访问

默认情况下,TypeScript脚本处于全局作用域,这意味着一个文件中的所有函数、方法、变量等在所有其他TypeScript文件中都是可访问的。这可能会导致变量、函数的冲突,程序员可以在不知不觉中编辑函数/变量名称或值。因此,引入了模块的概念,以防止这种默认的全局作用域,并将所有关联的变量和函数封装在局部作用域中。这在维护大型代码库时非常有用。

由于模块在TypeScript文件中创建了局部作用域,所以在模块中定义的所有变量、函数或类都不可在该模块外部访问。本文中,我们将看到如何允许模块中定义的类在模块外部访问。在TypeScript中,一个在模块中定义的类的语法如下:

语法:

module 模块名称 {
    class 类名称 {
        字段名;
        方法名;
    }
}
HTML

示例1: 在这个示例中,在名为University的模块内创建了一个名为Students的类,它具有一个带有字符串参数表示学生姓名和数字参数表示学生年龄的参数化构造函数,用于初始化或构造对象。

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);
HTML

输出: 因为如前所述,名为Student的类不可在University模块外访问,所以会发生编译错误。

如何允许模块内的类能够在模块外访问

为了解决这个问题,我们简单地使用 _ export_ 关键字,它使得模块内的所有类、函数、变量、方法都可以在模块外部访问。换句话说,我们可以说export关键字将所有局部作用域的类、函数、变量转换为全局作用域。

示例2: 这个示例与前一个示例非常相似,但是唯一的区别是在类Student之前使用了关键字 _ export_ ,这意味着该类及其关联的函数、方法可以在University模块外部使用。

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);
HTML
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);
HTML

输出:

如何允许模块内的类能够在模块外访问

阅读更多:JavaScript 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册