9

Joi を使用して、hapijs フレームワークを使用して node.js サーバーでサービスのペイロードを検証しています。以前は次のように見えていました(私のタイプスクリプトコードとjavascriptにコンパイルした後):

payload: {
    para1: Joi.number().required(),
    para2: Joi.string()
}

ここで、2 つのパラメーターのデフォルト値を設定します。コードが JavaScript で記述されている場合は、次のようにできます。

payload: {
    para1: Joi.number().required().default(1),
    para2: Joi.string().default("defaultstring")
}

Swagger でテストしたところ、デフォルト値が実際に設定した値になりました。

しかし、私のプロジェクトは typescript で書かれています。私は同じことをして、typescript コードをコンパイルしました。結果の JavaScript は次のようになります。

 payload: {
    para1: Joi.number().required()["default"](1),
    para2: Joi.string()["default"]("defaultstring")
 }

swagger では、デフォルト値は適用されません。

ここに私の質問があります:

  1. コンパイル後にコードが異なるのはなぜですか?
  2. とはどういう["default"]("defaultstring")意味ですか?
  3. 次のようにコンパイルできることを確認するために typescript コードを作成するにはどうすればよいですかJoi.string().default("defaultstring")

アップデート

@rsp の投稿によると、質問 2 の形式は、オブジェクトのプロパティにアクセスする方法が異なるだけです。ここからも参考になります。しかし、それらに違いがあるかどうかは説明されていません。誰にもアイデアはありますか?

Update2

JS プロパティにアクセスする 2 つの方法の違いは次のとおりですブラケットの方法を使用しても悪影響はないようです。ただ、私の場合はデフォルト値がswaggerに反映されません。ついて研究を行う予定です。

4

4 に答える 4