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 では、デフォルト値は適用されません。
ここに私の質問があります:
- コンパイル後にコードが異なるのはなぜですか?
- とはどういう
["default"]("defaultstring")
意味ですか? - 次のようにコンパイルできることを確認するために typescript コードを作成するにはどうすればよいですか
Joi.string().default("defaultstring")
アップデート
@rsp の投稿によると、質問 2 の形式は、オブジェクトのプロパティにアクセスする方法が異なるだけです。ここからも参考になります。しかし、それらに違いがあるかどうかは説明されていません。誰にもアイデアはありますか?
Update2
JS プロパティにアクセスする 2 つの方法の違いは次のとおりです。ブラケットの方法を使用しても悪影響はないようです。ただ、私の場合はデフォルト値がswaggerに反映されません。ついて研究を行う予定です。