Hace espacio de nombres apoyo mecanografiado?

votos
52

Al igual que en el título: ¿Tiene espacios de nombres de apoyo mecanografiado? Si es así, ¿cómo se utiliza ellos?

Publicado el 05/10/2012 a las 01:33
fuente por usuario
En otros idiomas...                            


5 respuestas

votos
55

Letra de imprenta permite definir módulos estrechamente relacionados a lo que será en ECMAScript 6. En el ejemplo siguiente se toma de la especificación:

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

Como se puede ver, los módulos tienen nombres y se pueden anidar. Si utiliza puntos en los nombres de módulos, mecanografiado compilará esto a módulos anidados de la siguiente manera:

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

Esto es igual a

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

Lo que también es importante es que si vuelve a utilizar exactamente el mismo nombre del módulo en un programa mecanografiado, el código pertenecerá al mismo módulo. Por lo tanto, puede utilizar módulos anidados para implementar espacios de nombres hierarchichal.

Respondida el 05/10/2012 a las 09:12
fuente por usuario

votos
28

A partir de la versión 1.5, Letra de imprenta apoya namespacepalabra clave. Los espacios de nombres son equivalentes a los módulos internos.

De Qué hay de nuevo en imprenta :

Antes de:

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

Después:

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

Para la definición de un módulo interno, ahora se puede utilizar tanto moduley namespace.

Respondida el 24/07/2015 a las 18:01
fuente por usuario

votos
9

Aquí es un ejemplo mecanografiado espacio de nombres:

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

Puede ver más aquí: http://www.codebelt.com/typescript/javascript-namespacing-with-typescript-internal-modules/

Respondida el 03/11/2013 a las 22:54
fuente por usuario

votos
7

No hay ninguna palabra clave 'espacio de nombres', pero los módulos internos (utilizando la palabra clave 'módulo') y los módulos externos (utilizando la palabra clave 'exportación') ofrecen una manera similar a particionar el código en jerarquías lógicas.

Respondida el 05/10/2012 a las 01:35
fuente por usuario

votos
3

Falso...

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

es igual a

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

porque se puede escribir fuera del módulo A:

var y = A.B.C.x;

Pero :

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
Respondida el 21/07/2015 a las 11:45
fuente por usuario

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