3

私はこのようなタイプスクリプトファイルを持っています...

var obj = {
    /** Test comment */
    prop1: '',
    prop2: ''
};

そして、javascriptはこのようにコンパイルされます...

var obj = {
    prop1: /** Test comment */
    '',
    prop2: ''
};

これに伴う問題は、コメントがプロパティの後に来るため、ドキュメントを生成するときにJSDocがオブジェクトのプロパティを認識しないことです。

私の解決策はこれです...

    var obj;
    obj = {};

    /** Test comment */
    obj.prop1 = '';

    obj.prop2 = '';

このシナリオでは、何らかの理由で宣言を初期化から分離する必要があります。そうしないと、タイプスクリプトが次のobj.propX = '';行でエラーをスローします。

プロパティ'propX'はタイプ'{}'の値に存在しません

私の質問:

  1. オブジェクトへのコメントの配置に関して、他の誰かがこの問題に遭遇しましたか?
  2. もしそうなら、私自身の解決策とは異なる場合、どのようにそれを回避しましたか?
  3. そうでない場合は、変数宣言と初期化を組み合わせることができるように、エラーの発生を防ぐためにできることはありますか。
4

1 に答える 1

6

これはバグです。TypeScriptの将来のリリースでは、コメントは正しく保存されます。

それまでの間、回避策として、次の2つのオプションがあります。

また

var obj: any = {}; // No type checking, anywhere, on obj

または

var obj: { prop1: string; prop2: string; } = {}; // More work, but type checking will happen now

その後、これを行うことができ、期待どおりに機能するはずです。

/** Test comment */
obj.prop1 = '';
于 2013-01-07T23:38:52.617 に答える