打字稿私有成员不递增

时间:2015-05-19 00:47:31

标签: typescript

我正在做一个熟悉的kata,Bowling Game Kata的Typescript实现。以下是我的游戏课程:

class Game {
    private scoreField: number;
    constructor() {
        this.scoreField = 0;
    }
    public roll(pins : number) : void {
        this.scoreField += pins;
    }
    public score(): number {
        return this.scoreField;
    }
}

编译很好,但是当我测试“得分():”

test("AllOnes", function () {
    for (var i: number; i < 20; i++) {
        g.roll(1);
    }
    equal(g.score(), 20);
});

..对于20个1针的卷,我希望得分()返回20,但它返回0.看来scoreField变量没有被成功分配。谷歌搜索和搜索约40分钟后,我没有看到任何明显的...

2 个答案:

答案 0 :(得分:1)

  

谷歌搜索并搜索约40分钟后,我没有看到任何明显的事情......

根据您的代码,2件事情需要运作:

  • 需要执行构造函数...这不会显示在您发布的代码中

  • this可能是错的。如果你做var g = new Game()(构造函数调用),那么this就可以了,所以可能不是原因。 (更多关于this https://www.youtube.com/watch?v=tvocUcbCupA)。

答案 1 :(得分:1)

问题实际上在于你的测试,你有这个:

test("AllOnes", function () {
    for (var i: number; i < 20; i++) {
        g.roll(1);
    }
    equal(g.score(), 20);
});

但i的价值永远不会被初始化,所以试试吧......

test("AllOnes", function () {
    for (var i: number = 0; i < 20; i++) { // <-- note the = 0
        g.roll(1);
    }
    equal(g.score(), 20);
});