Czy nazw wsparcie maszynopis?

głosy
52

Jak w tytule: obsługuje maszynopis nazw? Jeśli tak, w jaki sposób z nich korzystać?

Utwórz 05/10/2012 o 01:33
źródło użytkownik
W innych językach...                            


5 odpowiedzi

głosy
55

Maszynopis pozwala określić moduły ściśle związane, co będzie w ECMAScript 6. Poniższy przykład pochodzi z spec:

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

Jak widać, moduły mają nazwy i mogą być zagnieżdżone. Jeśli używasz kropek w nazwach modułów, maszynopis będzie skompilować ten modułów zagnieżdżonych w następujący sposób:

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

To jest równa

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

Co równie ważne jest to, że jeśli ponowne dokładnie taką samą nazwę modułu w jednym programie maszynopis, kod będzie należeć do tego samego modułu. Stąd też można korzystać z modułów zagnieżdżonych wdrożyć nazw hierarchichal.

Odpowiedział 05/10/2012 o 09:12
źródło użytkownik

głosy
28

Począwszy od wersji 1.5, maszynopis obsługuje namespacesłowa kluczowego. Nazw są równoważne moduły wewnętrzne.

Od Co nowego w maszynopisie :

Przed:

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

Po:

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

Definiowania modułu wewnętrznego, teraz można używać zarówno modulei namespace.

Odpowiedział 24/07/2015 o 18:01
źródło użytkownik

głosy
9

Oto przykład nazw maszynopis:

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

Możesz sprawdzić więcej tutaj: http://www.codebelt.com/typescript/javascript-namespacing-with-typescript-internal-modules/

Odpowiedział 03/11/2013 o 22:54
źródło użytkownik

głosy
7

Nie ma „namespace” słowo kluczowe, ale moduły wewnętrzne (za pomocą „moduł” słowo kluczowe) oraz zewnętrznych modułów (za pomocą słowa kluczowego „wywóz”) oferują podobny sposób Partycjonowanie kod w hierarchii logicznych.

Odpowiedział 05/10/2012 o 01:35
źródło użytkownik

głosy
3

Fałszywy...

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

jest równe

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

ponieważ można napisać poza modułem 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
Odpowiedział 21/07/2015 o 11:45
źródło użytkownik

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