Joiを使用して、hapijsフレームワークを使用しているnode.jsサーバーのサービスのペイロードを検証しています。それは(私のtypescriptですコードならびにJavaScriptにコンパイルした後)、このように見えるように使用:検証のデフォルト値を設定する
payload: {
para1: Joi.number().required(),
para2: Joi.string()
}
は今、私は2つのパラメータのデフォルト値を設定したいです。コードはJavaScriptで書かれている場合、私はこれを行うことができます。
payload: {
para1: Joi.number().required().default(1),
para2: Joi.string().default("defaultstring")
}
は私が闊歩してそれをテストし、デフォルト値は、実際に私が設定した値となりました。
しかし、私のプロジェクトはtypescriptで書かれています。私は同じことを行い、タイスクリプトコードをコンパイルしました。結果のjavascriptは次のようになります。
payload: {
para1: Joi.number().required()["default"](1),
para2: Joi.string()["default"]("defaultstring")
}
スワッガーでは、デフォルト値は適用されません。ここで
私の質問です:
- コードをコンパイルした後異なってくるのはなぜ?
["default"]("defaultstring")
とは何ですか?それは何ですか?- は、どのように私はそれが@のRSPのポストによると
Joi.string().default("defaultstring")
として
更新をコンパイルできることを確認しtypescriptですコードを書くことができ、問題2のフォーマットは、オブジェクトのプロパティにアクセスするだけで、別の方法です。私はまたhereからの参照を得る。しかし、彼らは何か違いがあるかどうかは説明しません。誰にも分かりますか?アップデート2
はJSプロパティにアクセスする二つの方法の違いです。大括弧を使っても効果はないようです。しかし、私の場合は、デフォルト値はスワッガーに反映されません。それについての研究をしていきます。 JavaScriptで
最後にそれを理解しました。 typescriptを使用すると、スガッサーノートはJSファイルではなく、typescriptの初期関数から生成されます。コード自体に問題はありません。 – zhangjinzhou