2016-12-13 2 views
1

私はAurelia Cliを使用していますが、大部分はうまくいっていますが、1つは本当にうんざりしています。私はそうのような新しいプロトタイプの拡張機能を作成しているAurelia CLIとタイプスクリプトを使用した場合の無作為な嚥下障害失敗

interface Array<T> { 
    remove(itemToRemove: T): Array<T>; 
} 

Array.prototype.remove = function (itemToRemove) { 
    const index = this.indexOf(itemToRemove); 
    if (index !== -1) { 
     this.splice(index, 1); 
    } 
    return this; 
} 

私はau run --watchランニングで任意のファイルを保存するとき、これは、ことを除いて正常に動作します。 remove[]の有効な方法ではないことを伝えるビルドでエラーが発生します。これはランダムで、約4回に1回発生します。私が何も変えておらず、もう一度セーブすれば、もう一度不平を言うことはないでしょう。

オレリアにはどのようにして一貫して問題ないのですか?完全なプロジェクトへ

リンク:https://github.com/4imble/StackRpg/tree/master/Client/src

+1

これはTypeScriptの透明化ステップの問題のように思えますが、Aurelia特有の問題はありません。 –

+0

おそらく私はAureliaまたはCLIで何かが壊れていることを示唆していない、ちょうど私の問題にいくつかの文脈を与える。注文に合わせて最初に見たようなものを手伝ってくれる方法はありますか? – 4imble

+0

これは関連しないと仮定 - http://stackoverflow.com/questions/12701732/typescript-augmenting-built-in-types - 私は100%確実ではないでしょう。それを引き起こす。私はより多くのTSの知識を持つ誰かにpingします –

答えて

2

あなたが見ている問題は、おそらく一貫して、アレイの拡張モジュールのソース・ファイルを供給されていないコンパイラです。ほとんどの場合、build script is set up to only compile files if they changeが原因です。

まず、.pipe(changedInPlace({firstPass: true}));をコメントアウトして、一貫性のあるビルドを開始するかどうかを確認してください。

もしそうなら、そのソースファイルが常にコンパイラに渡されるように、ビルドスクリプトを更新する必要があります。ような何か:あなたが持っているように、私は、配列のプロトタイプを設定しようと

let dts = gulp.src(project.transpiler.dtsSource); 

let src = gulp.src(project.transpiler.source) 
.pipe(changedInPlace({firstPass: true})); 

let exts = gulp.src("path/to/extension.ts") 

return eventStream.merge(dts, src, exts) 

また、typescriptです2.1で、少なくとも、文句を言うでしょう。これは次のように修正できます:

(<any>Array.prototype).remove = function (...etc 
+0

これはうまくいったようです。私はファイルを元に戻しても私はそれを再現することができないので、確かに言うことはできません!あなたが言及した問題を試して再現するために、typescript(2.1.4)をアップグレードする私と何か関係があります。 – 4imble

関連する問題