Для организации больших программ предназначены пространства имен. Пространства имен содержат группу классов, интерфейсов, функций, других пространств имен, которые могут использоваться в некотором общем контексте.

Для определения пространств имен используется ключевое слово namespace:

namespace UserNamespace {

    export interface IUser {

        displayInfo();
    }

    export class User implements IUser {

        private _id: number;
        private _name: string;
        constructor(id: number, name: string) {

            this._id = id;
            this._name = name;
        }
        displayInfo() {

            console.log("id: " + this._id + "; name: " + this._name);
        }
    }

    let defaultUser: IUser = new User(2, "Tom");
}

// создаём объект класса
let alice = new UserNamespace.User(4, "Alice");
alice.displayInfo();

Псевдонимы

Возможно, нам приходится создавать множество объектов

UserNamespace.Employees.Employee

, но каждый раз набирать полное имя класса с учетом пространств имен, вероятно, не всем понравиться, особенно когда модули имеют глубокую вложенность по принципу матрешки. Чтобы сократить объем кода, мы можем использовать псевдонимы, задаваемые с помощью ключевого слова import. Например:

namespace UserNamespace.Employees {

    export class Employee extends User {
    }

    export class Manager extends User { }
}

import employee = UserNamespace.Employees.Employee;
let alice = new employee(4, "Alice");
alice.displayInfo();
let bill = new employee(5, "Bill");
bill.displayInfo();

Слияние модулей

В программе можно несколько раз объявить модуль с одним и тем же именем, в этом случае все эти определения потом сольются в один модуль.

namespace UserNamespace {

    export class User{

    }
}

namespace UserNamespace {

    export class Employee extends User {
    }

    export class Manager extends User { }
}

results matching ""

    No results matching ""