Podporuje strojopisem namespace?

hlasů
52

Stejně jako v názvu: nepodporuje strojopisem jmenné prostory? Pokud ano, jak mohu použít?

Položena 05/10/2012 v 01:33
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
55

Strojopisem umožňuje definovat modulů úzce souvisí s tím, co bude v ECMAScript 6. Následující příklad je převzat z spec:

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

Jak můžete vidět, moduly mají jména a mohou být vnořené. Používáte-li tečky v názvech modulů, bude strojopisem kompilace to vnořené moduly následujícím způsobem:

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

To se rovná

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

Co je také důležité, je, že pokud znovu použít stejný název modulu v jednom strojopisu programu, kód bude patřit do stejného modulu. Z tohoto důvodu, můžete použít vnořené moduly implementovat hierarchichal jmenných prostorů.

Odpovězeno 05/10/2012 v 09:12
zdroj uživatelem

hlasů
28

Jak verze 1.5, Typescript podporuje namespaceklíčové slovo. Jmenné prostory jsou rovnocenné vnitřních modulů.

Z Co je nového na stroji :

Před:

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

Po:

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

Pro vymezení vnitřní modul, nyní můžete použít oba modulea namespace.

Odpovězeno 24/07/2015 v 18:01
zdroj uživatelem

hlasů
9

Zde je příklad strojopisem namespace:

///<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();
        }
    }
}

Můžete se podívat na více zde: http://www.codebelt.com/typescript/javascript-namespacing-with-typescript-internal-modules/

Odpovězeno 03/11/2013 v 22:54
zdroj uživatelem

hlasů
7

Neexistuje žádná ‚namespace‘ klíčové slovo, ale interní moduly (tzv modul "klíčové slovo) a externích modulů (pomocí‚vývozem‘klíčové slovo) nabízejí podobný způsob, jak rozdělit svůj kód do logických hierarchií.

Odpovězeno 05/10/2012 v 01:35
zdroj uživatelem

hlasů
3

Nepravdivé...

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

je rovný

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

protože můžete psát mimo modulu A:

var y = A.B.C.x;

Ale :

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
Odpovězeno 21/07/2015 v 11:45
zdroj uživatelem

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