Heeft Typescript ondersteuning namespace?

stemmen
52

Zoals in de titel: doet Typescript ondersteuning namespaces? Zo ja, hoe kan ik ze gebruiken?

De vraag is gesteld op 05/10/2012 om 01:33
bron van user
In andere talen...                            


5 antwoorden

stemmen
55

Typescript laat definiëren modules nauw verwant aan wat in ECMAScript 6. Het volgende voorbeeld is ontleend aan de specificatie:

module outer {
    var local = 1;
    export var a = local;
    export module inner {
        export var x = 10;
    }
}

Zoals u kunt zien, modules hebben namen en kunnen worden genest. Als je punten gebruiken in module namen, zal typoscript deze samen te stellen geneste modules als volgt:

module A.B.C {
    export var x = 1;
}

Dit is gelijk aan

module A {
    module B {
        module C {
            export var x = 1;
        }
    }
}

Wat ook belangrijk is, is dat als je exact dezelfde module naam in één typoscript programma opnieuw te gebruiken, wordt de code behoren tot dezelfde module. Daarom kunt u geneste modules gebruiken om hiërarchische naamruimten implementeren.

antwoordde op 05/10/2012 om 09:12
bron van user

stemmen
28

Vanaf versie 1.5, Typescript ondersteunt namespacetrefwoord. Namespaces gelijkwaardig zijn aan interne modules.

Vanaf Wat is nieuw in Typescript :

Voor:

module Math {
    export function add(x, y) { ... }
}

Na:

namespace Math {
    export function add(x, y) { ... }
}

Voor het definiëren van een interne module, nu kunt u zowel gebruiken moduleen namespace.

antwoordde op 24/07/2015 om 18:01
bron van user

stemmen
9

Hier is een typoscript namespace voorbeeld:

///<reference path='AnotherNamespace/ClassOne.ts'/>
///<reference path='AnotherNamespace/ClassTwo.ts'/>

module MyNamespace
{
    import ClassOne = AnotherNamespace.ClassOne;
    import ClassTwo = AnotherNamespace.ClassTwo;

    export class Main
    {
        private _classOne:ClassOne;
        private _classTwo:ClassTwo;

        constructor()
        {
            this._classOne = new ClassOne();
            this._classTwo = new ClassTwo();
        }
    }
}

U kunt controleren hier meer informatie: http://www.codebelt.com/typescript/javascript-namespacing-with-typescript-internal-modules/

antwoordde op 03/11/2013 om 22:54
bron van user

stemmen
7

Er is geen 'namespace' keyword, maar interne modules (met behulp van de 'module' keyword) en externe modules (met behulp van de 'export' keyword) bieden een soortgelijke manier om uw code te verdelen in logische hiërarchieën.

antwoordde op 05/10/2012 om 01:35
bron van user

stemmen
3

Valse ...

module A.B.C {
    export var x = 1;
}

is gelijk aan

module A {
    export module B {
        export module C {
            export var x = 1;
        }
    }
}

omdat je buiten de module A kan schrijven:

var y = A.B.C.x;

Maar :

module A {
    module B {
        module C {
            export var x = 1;
        }
        var y = C.x; // OK
    }
    //var y = B.C.x; // Invalid
}
//var y = A.B.C.x;   // Invalid
antwoordde op 21/07/2015 om 11:45
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more