使用Typescript嵌套类

时间:2016-06-12 18:32:20

标签: android typescript typescript1.8

如何在Typescript中的类中包含一个类?我试图模拟android API,在nativescript中使用,所以我需要在模块中声明一个类ina,如下所示:

export module myModule {    
    export class MasterClass {

        static myVariable: number;

        public static myFunction(param: string): boolean;

        static class myClass2{
            someFunction():void;
        }
    }
}

但是,这会引发各种错误,例如

  

错误TS1005:' ='预期

如果我这样做:

myClass = Class {}

然后我收到编译器错误,大声说在环境上下文中不允许初始化器。

我该怎么做呢,tsc很开心,我可以参考myModule.MasterClass.myClass2.somefunction()。 ?

2 个答案:

答案 0 :(得分:0)

你不能在打字稿中这样做,它不等同于java。

在java中,内部类是其父类实例的一部分,静态内部类基本上只使用它们的父类作为命名空间/闭包,你可以在带有namespace的打字稿中模仿:

export module myModule {
    export namespace MyNamespace {
        export var myVariable: number;
        export function myFunction(param: string): boolean {}

        export class MasterClass {}

        export class MyClass2 {
            someFunction(): void {}
        }
    }
}

因此,所有静态成员/方法现在都是命名空间变量/函数,然后您可以使用点表示法进行引用。

答案 1 :(得分:0)

您可以合并类和命名空间:

export namespace MyModule {
    export class MasterClass {
        public myVariable: number;
        public static myFunction(param: string): boolean {
            return false;
        }
    }
    export namespace MasterClass {
        export class myClass2 {
            public static someFunction(): void {
                // implementation
            }
        }
    }
}

MyModule.MasterClass.myClass2.someFunction();

PS。您应该避免使用module关键字。请改用namespace