父类包含子类列表使用class-transformer进行discriminator会启动崩溃

父类包含子类列表使用class-transformer进行discriminator会启动崩溃,提示:Error message:B is not initializedSourceCode:{ value: B, name: ‘b’ },

代码如下:

//定义 
export class A { 
  type:string = ‘b’ 
  @Type(() => A,myDiscriminator()) 
  components?: B[] 
} 
 
export class B extends A { 
} 
 
export function myDiscriminator(): ESObject { 
  return { 
    keepDiscriminatorProperty: true, 
    discriminator: { property: ‘type’, 
      subTypes: [ 
        { value: B, name: ‘b’ }, 
      ], 
    } 
  } 
} 
 
//在另一个文件使用 
let a = plainToClass(A, json)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
HarmonyOS
2024-05-11 15:23:03
1.0w浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
莫莫莫小贝

该问题是因为class 跟function不一样,没有变量提升,可以把class B放在上面试试:

import {Type} from “class-transformer”; 
import “reflect-metadata” 
export class B { 
  constructor() { 
  } 
} 
 
export class A { 
  type:string = ‘b’ 
  @Type(() => A,myDiscriminator()) 
  components?: B[] 
} 
 
export function myDiscriminator(): ESObject { 
  return { 
    keepDiscriminatorProperty: true, 
    discriminator: { property: ‘type’, 
      subTypes: [ 
        { value: B, name: ‘b’ }, 
      ], 
    } 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
分享
微博
QQ
微信
回复
2024-05-12 22:10:57


相关问题
HarmonyOS class-transformer问题
1173浏览 • 1回复 待解决
HarmonyOS class-transformer三方库Json转class
575浏览 • 1回复 待解决
HarmonyOS @ComponentV2使用暗黑崩溃
378浏览 • 1回复 待解决
HarmonyOS 一个class传递属性崩溃
460浏览 • 1回复 待解决