Typescript: 宣言の前に使用されるクラス「x」

作成日 2017年08月11日  ·  4コメント  ·  ソース: microsoft/TypeScript

##

TypeScriptバージョン: 2.4.1
Visual Studioバージョン: 14.0.25420.01アップデート3

ファイル:ParallelogramF.ts
namespace JMath { export class ParallelogramF extends Polygon { ... } }
ファイル:Polygon.ts
namespace JMath { export class Polygon { } }

予想される行動:
クラスポリゴンは正しく認識されている必要があります。

実際の動作:
エラーが発生しました:宣言の前に使用されたクラスポリゴン。

これは、プロジェクトプロパティの[JavaScript出力をファイルに結合する]チェックボックスがオンになっていて、その前に「xxx.js」ファイル名が指定されている場合にのみ発生します。

解決:
1-ファイル「ParallelogramF.ts」の名前を「ZParallelogramF.ts」に変更すると、問題が解決し、正しくコンパイルされます!!!!
2-「JavaScript出力をファイルに結合する」チェックボックスをオフにすると、正しくコンパイルされます!!!!

プロジェクトの「.csproj」ファイル内の「TypeScriptCompileInclude = "ParallelogramF.ts"」の場所を、その親タグ内の最後の項目に変更しても効果はありません。

Question

最も参考になるコメント

@arashebrahimi追加してみてください
/// <reference path="Polygon.ts"/>
ParallelogramF.tsファイルの一番上に

これを行う「新しい」方法があるかもしれませんが、単一のファイルにコンパイルするときに、ParallelogramF.tsの前にPolygon.tsをコンパイルすることをコンパイラーに知らせます。

全てのコメント4件

エラーが発生した場合、コンパイルされたコードは実行されないことに注意してください。

ご回答ありがとうございます、

この問題とあなたの対応の関係がわかりませんか?!!!
エラーが発生すると、コンパイルされたコードが実行されないことは明らかです!!!!!!!!!

しかし、コンパイル時に誤った「エラー」について話しました!!!!
私が「走る」について話したところ???

コンパイル時にバグがあると言いましたが、エラーなしでコンパイルする必要がありますが、「正しくない」エラーが発生します!!!!

@arashebrahimi追加してみてください
/// <reference path="Polygon.ts"/>
ParallelogramF.tsファイルの一番上に

これを行う「新しい」方法があるかもしれませんが、単一のファイルにコンパイルするときに、ParallelogramF.tsの前にPolygon.tsをコンパイルすることをコンパイラーに知らせます。

これがどのように予想される動作であるかわかりません。 問題は、子クラスが同じ名前空間内でそのように認識されていないことです。これにより、理論的には、参照を明示的に呼び出す必要がなくなります。 コンパイラは、すべての子クラスの前に基本クラスをコンパイルすることを_知っている_必要があります。

@arashebrahimiが述べているのは、基本クラス(ファイル名)の後に来る子クラス

VisualStudioバージョン15.4.5のTS2.5.3でこの問題を再現できます。

このページは役に立ちましたか?
0 / 5 - 0 評価