異なる型のサブタイプに対する同じクラスの複数の @Type クラス コンバーター
P粉702946921
P粉702946921 2023-08-03 13:32:17
0
1
462
<p>少し混乱するかもしれませんので、フォローしてください:</p><p><ul><li>私は NestJ と class-validator/transformer を使用しています。 </li><li>2 つの型を含めることができる配列があります。 </li><li>@Type を使用して、識別子を介して項目を定義します。 </li><li>シリアル化で必要なため、Transform を使用しています。そうしないと、空のオブジェクトが作成されます。 </li></ul></p><p>問題は、私の識別子が 7 つの値を持つ列挙型であり、そのうちの 6 つは 1 つのクラスを指し、最後の 1 つは別の種類を指すことです。問題は、列挙型が何であっても、シリアル化するときに常に最初のサブタイプに変更されることです。 </p>


<pre class="brush:js;toolbar:false;">enum DiscrType = {A: "a", B: "b", C: "c"} クラス識別子 { @IsEnum(DiscrType) タイプ: DiscrType } class ClassONE extends Discriminator {...} class ClassTWO extends Discriminator {...} クラス スタッフ { @Type(() => 識別子、{ 識別子: { プロパティタイプ'、 サブタイプ: [ { 値: ClassTWO、名前: DiscrType.C}、 { value: ClassONE, name: DiscrType.A}, // B であっても常にこの値になります { 値: ClassONE、名前: DiscrType.B}、 ]、 }、 keepDiscriminatorProperty: true、 }) @変身( ({ 値 }) => value?.map((オブジェクト: ClassONE | ClassTWO ) => object.type === DiscrType.C ? plainToClass(classTWO, オブジェクト) : plainToClass(ClassONE, オブジェクト), )、 ) @ValidateNested({それぞれ: true}) プロパティ: (ClassONE | ClassTWO )[] } </pre> <p>動作:</p> <pre class="brush:js;toolbar:false;">new Stuff({type: DiscrType.B,...}) // クラス シリアライザーによるシリアル化 // 期待される: x = {タイプ: "b",...} // 実際の: x = {タイプ: "a",...}<span style="font-family:'sans serif、tahoma、verdana、helvetica';"><span style="white-space:nowrap;" > </span>< <p><br /></p>
P粉702946921
P粉702946921

人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!