Suporta typescript namespace?

votos
52

Como no título: suporta typescript namespaces? Se sim, como posso usá-los?

Publicado 05/10/2012 em 01:33
fonte usuário
Em outras línguas...                            


5 respostas

votos
55

Datilografado permite definir módulos intimamente relacionados com o que estará em ECMAScript 6. O exemplo a seguir é tomada a partir da especificação:

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

Como você pode ver, os módulos têm nomes e podem ser aninhados. Se você usar pontos em nomes de módulos, typescript irá compilar isso para módulos aninhados como segue:

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

Isso é igual a

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

O que também é importante é que se você reutilizar exatamente o mesmo nome do módulo em um programa original datilografado, o código irá pertencer ao mesmo módulo. Assim, você pode usar módulos aninhados para implementar namespaces hierarchichal.

Respondeu 05/10/2012 em 09:12
fonte usuário

votos
28

A partir da versão 1.5, Typescript suporta namespacepalavra-chave. Os espaços de nomes são equivalentes aos módulos internos.

Desde que há de novo à máquina :

Antes:

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

Depois de:

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

Para definir um módulo interno, agora você pode usar tanto modulee namespace.

Respondeu 24/07/2015 em 18:01
fonte usuário

votos
9

Aqui está um exemplo do texto dactilografado 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();
        }
    }
}

Você pode conferir mais aqui: http://www.codebelt.com/typescript/javascript-namespacing-with-typescript-internal-modules/

Respondeu 03/11/2013 em 22:54
fonte usuário

votos
7

Não há nenhuma palavra-chave 'namespace', mas módulos internos (usando a palavra-chave 'módulo') e módulos externos (usando a palavra-chave 'exportação') oferecem uma maneira semelhante ao particionar o seu código em hierarquias lógicas.

Respondeu 05/10/2012 em 01:35
fonte usuário

votos
3

Falso...

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

é igual a

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

porque você pode escrever fora do módulo A:

var y = A.B.C.x;

Mas :

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
Respondeu 21/07/2015 em 11:45
fonte usuário

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