2017-08-12 7 views
-1

をtranspiledない私は、このコード活字体クラスプロパティのデフォルト値は

class GameManager { 

    protected games: Game[]; 

    /** 
    * Clear the list from started games. 
    */ 
    clean(): void { 
    this.games = this.games.filter(game => !game.isRunning()); 
    } 
} 

私は

TypeError: Cannot read property 'filter' of undefined

を取得し、新しいインスタンス上clean()を呼び出すたびに、私はtranspiledコードを見ればのない定義がありませんを持っていますまったく不動産

"use strict"; 
Object.defineProperty(exports, "__esModule", { value: true }); 
var GameManager = (function() { 
    function GameManager() { 
    } 
    /** 
    * Clear the list from started games. 
    */ 
    GameManager.prototype.clean = function() { 
     this.games = this.games.filter(function (game) { return !game.isRunning(); }); 

    return GameManager; 
}()); 
exports.default = GameManager; 

Iはまた、これは効果がなかった

冗長である空の配列としてデフォルト値を定義しようとしたが、それでも

protected games: Game[] = []; 

コンストラクタをコーディングせずに配列を定義する方法を教えてください。

答えて

1

I also tried defining a default value as an empty array, which is redundant but still

これは冗長ではありません。それは必要です。初期化されていないプロパティの値はundefinedであり、[]ではありません。

This had no effect

あなたは何とか間違って関数を呼び出し、適切にこれをテストたりしませんでした。ほとんどの場合、前者です。

+1

トランスペアレント... facepalmを忘れた人の推測。私はこの質問を削除する必要があります、本当に誰にも便利ではないと思います。 –

0

変数を初期化するコンストラクタを作成することができます。

class GameManager { 
    constructor(games: Game[]) { 
     this.games = games; 

    } 

    protected games: Game[]; 



    ... 
} 

const manager = new GameManager(theGames); // initialize it to avoid the problems