TypeScript:如何引用同一模块中的其他类?

时间:2015-11-10 07:35:14

标签: typescript

我对TypeScript没什么问题。我有一个模块,我已经定义了两个类(我将在下面提供代码)。我无法访问其他类,在第一个类中,而在相反的类中。我做错了什么?

这是我的代码:

module Model {

    export class Model {
        public apples:Apple[];


        getAppleCnt() {
            return this.model.apples.length;
        }

        createApple(){
            var index = this.model.apples.getAppleCnt()+1;
            return this.model.apples.push(Apple.createApple("Apple "+index,index));
        }

        createApples(){
            this.model = new Model();
            this.model.apples.=[];
        }


    }

    export class Apple {
        createApple(name:string,index:number){
            var apple = new Apple();
            apple.name = name;
            apple.index = index;
            return apple;
        }
    }
}

2 个答案:

答案 0 :(得分:2)

这是一种方法:

module Model {

    export class Model {
        public apples: Apple[];


        getAppleCnt() {
            return this.apples.length;
        }

        createApple() {
            var index = this.getAppleCnt() + 1;
            return this.apples.push(Apple.createApple("Apple " + index, index));
        }

        createApples() {
            this.apples = [];
        }


    }

    export class Apple {
        name: string;
        index: number;
        static createApple(name: string, index: number) {
            var apple = new Apple();
            apple.name = name;
            apple.index = index;
            return apple;
        }
    }
}

答案 1 :(得分:1)

我们应该创建Apple的实例或调用静态方法:

module Model {

    export class Model {
        protected model: Model;
        public apples:Apple[];

        getAppleCnt() {
            return this.model.apples.length;
        }

        createApple(){
            var index = this.model.apples.length + 1;
            // instance 
            var apple = new Apple().createApple("Apple "+index,index);
            // or call some static method
            apple = Apple.createAppleStatic("Apple "+index,index);
            return apple;
        }

        createApples(){
            this.model = new Model();
            this.model.apples = [];
        }
    }

    export class Apple {
        public name: string;
        public index: number;

      createApple(name:string,index:number){
        var apple = new Apple();
        apple.name = name;
        apple.index = index;
        return apple;
     }
     // the same as above but static one
     static createAppleStatic(name:string,index:number){
        var apple = new Apple();
        apple.name = name;
        apple.index = index;
        return apple;
    }
   }
}

a working playground example

相关问题